2015-12-29 2 views
0

Я разработал приложение с VS2010 и установочное развертывание с IS Limited Edition. Приложение предоставляет некоторые данные в XML-файле, который установлен в той же папке. Если приложение вносило изменения в файл XML, это было сохранено в virtualStore.Wix Toolset vs. InstallShield - VirtualStore Access

Я использую VS2015 и Wix Toolset. Приложение может быть скомпилировано, и я смог закодировать файл WXS. Новая встроенная MSI установит приложение, и все выглядит нормально. Но теперь приложение не может получить доступ к XML-файлу. Доступ запрещен. Я попытался сравнить оба MSI с Orca, но не вижу ничего заметного. Я не уверен, если это проблема настройки или самого приложения.

редактировать

Если я копирую «старый» файл EXE в новых установках, приложение может получить доступ к файлу XML.

Спасибо за помощь и подсказки

+0

Вы уверены, что файл найден (попробуйте использовать Process Monitor)? Что такое сообщение об ошибке? – Starceaker

+1

Также предоставьте файл журнала вашей установки: «zzz.msi/lvoicewarmupx debug.log». Вы также можете попробовать сравнить лог-файлы обеих ваших установок. – Starceaker

+0

Спасибо. Я сравниваю файлы журнала (большие файлы), но ничего не нашел. Я копирую app.exe с первой установки (что хорошо) во второй установке. Оно работает. Поэтому я думаю, что настройка Wix в порядке. Я думаю, проблема может быть в миграции с VS2010 на VS 2015 ... – Fredo

ответ

2

Если программа по-видимому, еще до Windows Vista, работает как пользователь с ограниченными правами, и пытается записать в определенных местах машины только, Windows может перенаправить доступ к виртуальный магазин как часть обратной совместимости. Если программа не отображается до Windows Vista, перенаправление не выполняется.

Я полагаю, что Windows обнаруживает, есть ли программа перед Windows Vista, прочитав ее манифест для поддерживаемых платформ - supportedOS элементов в application manifest. Я предполагаю, что изменение в вашей инструментальной цепочке с VS 2010 до VS 2015 привело к тому, что этот элемент был добавлен в манифест вашего приложения (Windows XP прошла через поддерживаемое время его существования, и поэтому Visual Studio 2015 может подразумевать, что вы поддерживаете хотя бы Vista).

Возможно, вы сможете переопределить манифест, но на самом деле вы должны исправить свою программу, чтобы не пытаться писать на места в каждой машине. В идеале вы должны использовать такое местоположение, как папка LocalAppData, хотя для обратной совместимости могут быть преимущества, по крайней мере, для чтения старого файла из виртуального магазина.