簡體   English   中英

WiX:Change.msi 目錄和 CustomAction 表,其中包含要由 .msp 補丁文件使用的更改

[英]WiX: Change .msi Directory and CustomAction table with changes to be used by .msp Patch file

使用 Wix 工具集 v3.11,我為我的應用程序(比如說 1.1 版)創建了一個 .msi 文件,其中包含一個以 LocalAppDataFolder 為目標的 Directory 元素,並在其下放置一個 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">

結構體。 為了正確應用補丁,我使用 Orca 打開了注冊表中引用的 .msi 文件(在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\...\Products{GUID}\InstallProperties\LocalPackage 下)工具並編輯目錄表中的相應值。 我還編輯了 CustomActions 表以引用新路徑,因為它在那里用作參數。 所以,現在當我安裝補丁時,它會將所有文件(更改的和新的)放在 LocalAppDataFolder 中,就像初始安裝一樣。 但是,使用正確的參數調用自定義操作。

有沒有辦法將“基礎”msi 更改為針對我的新臨時文件夾,或者以某種方式告訴補丁使用新文件夾而不管初始路徑如何?

目標是應用補丁而無需先卸載應用程序。

非常感謝任何有關如何實現這一目標的幫助。

最后我們找到了解決方案。 所以這就是解決我們問題的方法,如果有人遇到過類似的事情:

我們在注冊表的兩個位置找到了 LocalAppDataFolder 的實際路徑:第一個條目位於HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders中。 第二個是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData...\Components 將文件放入 Temp 文件夾的具有組件 ID 的條目僅包含一個值,即該組件中第一個文件的路徑。 我們將兩個路徑都更改為新的臨時文件夾。

現在補丁將文件正確地提取到新的臨時文件夾中,並且自定義操作可以進一步處理它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM