2013-12-18 56 views

回答

2

爲了讓你在正確的方向添加這個(當然它適應您的需求放在首位)在你的拳頭MSI:

<DirectoryRef Id="INSTALLDIR"> 
    <Component Id="RegistryEntries" Guid="{0AC76129-F8E2-47D3-B9FD-09B1E10A8541}"> 
    <RegistryKey Root="HKLM" Key="Software\Company123\App123" Action="create"> 
     <RegistryValue Type="integer" Name="SomeIntegerValue" Value="1" KeyPath="yes"/> 
     <RegistryValue Type="string" Name="UserInput" Value="[USERINPUT]" /> 
    </RegistryKey> 
    </Component> 
</DirectoryRef> 

不要忘記引用該組件在<Feature><ComponentRef Id="RegistryEntries" /> 當您安裝例如,爲屬性[USERINPUT]賦值msiexec /i your.msi /qb+ USERINPUT="the value to be saved in registry"

然後在第二個MSI添加這樣的:

<Property Id="READREGISTRY"> 
     <RegistrySearch Id="USERINPUT_Value" Root="HKLM" Key="Software\Company123\App123" Name="UserInput" Type="raw" /> 
    </Property> 

你安裝USERINPUT=時輸入的值/字符串將存儲在你的第二個MSI在物業READREGISTRY

這裏一片登錄我的第二個msi:

PROPERTY CHANGE: Adding READREGISTRY property. Its value is 'testing registry wef wef wef w'. 

根據您的安裝位置它可能是每個我們呃或每臺機器上,您可以調整Root到HKCU以進行PerUser安裝,或將其留給PerMachine的HKLM。

欲瞭解更多信息,請參閱維克斯文件,提示:「如何:編寫一個註冊表項,在安裝過程」和「如何:讀取註冊表項安裝過程中」。

+0

非常感謝你,這正是我一直在尋找。 – Hahn

0

創建它獲取第一MSI安裝中的自定義操作,然後寫你想要到一個文件或註冊表中的值/用戶條目。在您的最終MSI中讀取來自注冊表/文件的值並使用它。

這裏是你如何讀取來自用戶的價值和更新您的app.config一個例子,這是不是一個蘋果對蘋果的場景,但是這將引導您完成它。

http://bensnose.blogspot.com/2013/03/more-custom-actions-with-wix.html

免責聲明:我還沒有嘗試過什麼是在這個博客帖子中提到,但我做的事情非常相似,並發現它具有很好的解釋,這就是爲什麼我張貼的鏈接。

2

一般來說,沒有。不需要Windows Installer軟件包來記錄它從用戶那裏得到的輸入。有些人會在註冊表中記錄一些信息,您可能會選擇依靠在那裏找到它。

作爲替代方案,你可能會發現,其他的安裝程序可以在沒有用戶界面運行,並且可以傳遞給它的性能充分控制。如果是這樣,您可以編寫自己的用戶界面(一種方式是定製的WiX Bootrapper應用程序 [example])以在運行安裝程序之前收集輸入。

相關問題