с помощью Wix Toolset v3.11 Я создал MSI-файл для своего приложения (скажем, версия 1.1) с элементом Directory, который нацелен на LocalAppDataFolder и помещает папку Temp внизу. Эта структура используется с элементом DirectoryRef, чтобы поместить туда некоторые файлы, к которым осуществляется доступ в пользовательском действии InstallFinalize. Теперь я сгенерировал патч (версия 1.2), который добавляет некоторые файлы в папку Temp. Но я хочу, чтобы эта папка была в TARGETDIR сейчас. Поэтому я изменил
<Directory Id="LocalAppDataFolder">
<Directory Id="APPDATA_TEMP" Name="Temp" />
</Directory>
на
<Directory Id="MY_TEMP_PATH" Name=".">
<Directory Id="APPDATA_TEMP" Name="Temp" />
</Directory>
под структурой
<Directory Id="TARGETDIR" Name="SourceDir">
. Для правильного применения исправления я открыл MSI-файл, на который есть ссылка в реестре (в папке HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ ... \ Products {GUID} \ InstallProperties \ LocalPackage ) с помощью инструмента Orca и отредактировал соответствующие значения в таблице Directory. Я также отредактировал таблицу CustomActions для ссылки на новый путь, поскольку он используется в качестве параметра там. Итак, теперь, когда я устанавливаю Patch, он помещает все файлы (измененные и новые) в LocalAppDataFolder, как это было при первоначальной установке. Настраиваемое действие вызывается с правильным параметром.
Есть ли способ изменить "базовую" msi для нацеливания на мою новую папку Temp или, в качестве альтернативы, как-то указать Patch использовать новую папку независимо отначальный путь?
Цель состоит в том, чтобы применить исправление без необходимости сначала удалять приложение.
Любая помощь в том, как этого добиться, очень ценится.