維克斯MSI安裝程序perMachine寫作安裝屬性HKCU而非HKLM。WIX MSI安裝程序perMachine寫作安裝屬性HKCU而非HKLM
其中一個症狀是我用來檢測嘗試安裝舊版本產品的原始邏輯失敗,因爲我依賴於Installed屬性在先前已執行安裝的系統上定義。要明確這個邏輯在過去有效,但現在我正在進行迴歸測試,並且失敗了。
我用orca編輯了msi,並修改了測試這個的啓動條件。我將啓動條件更改爲「已安裝」,並將消息更改爲「未安裝」,然後在安裝了我們的應用程序的多個系統上運行安裝程序。如果Installed爲true,那麼安裝程序將運行,但在任何情況下,安裝程序都會顯示消息框,表示它找不到註冊表項。
我看了所有這些系統和「安裝」註冊表項是位於HKCU /軟件/公司/產品/安裝= 1而不是HKLM。
而且這是一個64位安裝程序,當我運行安裝程序,再次進入UI,我看任務管理器,以確保它運行MSIEXEC它是64位版本。
下面是停止工作的相關WIX片段。查看第一個啓動條件。我正在添加Product ...部分的開頭。
<Product Id="*"
Name="$(var.ProductDisplayName)"
Language="1033"
Version="$(var.OurVersion)"
Manufacturer="$(var.ProductAuthor)"
UpgradeCode="$(var.ProductUpgradeCode)">
<Product Id="*"
Name="$(var.ProductDisplayName)"
Language="1033"
Version="$(var.VayTekVersion)"
Manufacturer="$(var.ProductAuthor)"
UpgradeCode="$(var.ProductUpgradeCode)"
>
<Package
Description="$(var.ProductDisplayName)"
Comments="$(var.ProductDisplayComment)"
Manufacturer="$(var.ProductAuthor)"
InstallerVersion="301" Compressed="yes"
Platform="$(var.Platform)"
InstallScope="perMachine"
InstallPrivileges="elevated"/>
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion Minimum="$(var.OurVersion)"
IncludeMinimum="no"
OnlyDetect="yes"
Property="NEWERPRODUCTFOUND" />
<UpgradeVersion
Minimum="07.01.01001" IncludeMinimum="yes"
Maximum="$(var.OurVersion)" IncludeMaximum="no"
Property="PREVIOUSVERSIONSINSTALLED"/>
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize"/>
</InstallExecuteSequence>
<Condition
Message="A later version of the product is already installed. Setup will now exit.">
(NOT NEWERPRODUCTFOUND) OR (NOT Installed)
</Condition>
後,我在代碼盯着,而我去掉了「不安裝」邏輯和左
NOT NEWERPRODUCTFOUND
這不是理想的,但在大多數情況下工作。
任何人都有一個想法,爲什麼註冊表項被放置在錯誤的配置單元?
我不包括具有InstallScope的定義WXS的一部分,但它被設置爲perMachine,一直以來發展的初期,幾年前。 – mooncaptain 2013-04-04 21:07:39
感謝您對未安裝的提示 - 我想這是在開發安裝程序的早期階段,我把它留在 – mooncaptain 2013-04-04 21:09:39
如果我已經設置了InstallScope =「perMachine」爲什麼註冊表項不會在HKLM中獲得HKCU在哪裏找到的?我可能會採取其他一些行動來解決這個問題。我最近添加了一些影響註冊表的Wow6432Node部分的註冊表項,因爲我添加了對我們的應用程序調用的僅32位應用程序的支持。可以重定向註冊表項的存儲嗎? – mooncaptain 2013-04-04 21:15:39