2010-01-14 44 views
3

到目前爲止,我沒有發現WIX是我最喜歡的最直觀,最易用的語言/系統。WIX屬性值替換和CAQuietExec

我創建了一個自定義對話框,輸入了數據並查看了安裝日誌中的值。

MSI (c) (C8:A4) [14:42:37:137]: PROPERTY CHANGE: Modifying VARRADIOBUTTONENVIRONMENT property. Its current value is 'Dev'. Its new value: 'QA'. 
MSI (c) (C8:A4) [14:42:41:448]: PROPERTY CHANGE: Modifying VARTEXTSETTINGSFILENAME property. Its current value is 'C:\Path\SettingsFileGenerator.xml'. Its new value: 'Test1234.txt'. 

後來,當談到時間使用我看到這個值:

Action ended 14:42:43: InstallFinalize. Return value 1. 
MSI (s) (BC:F8) [14:42:43:676]: Doing action: QtExec1 
Action 14:42:43: QtExec1. 
Action start 14:42:43: QtExec1. 
MSI (s) (BC:F4) [14:42:43:682]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIC4A7.tmp, Entrypoint: CAQuietExec 
MSI (s) (BC!BC) [14:42:43:690]: PROPERTY CHANGE: Deleting QtExecCmdLine property. Its current value is '"[INSTALLLOCATION]XmlPreprocess.exe /i:web.config /e:[VARRADIOBUTTONENVIRONMENT] "'. 
CAQuietExec: Error 0x8007007b: Command failed to execute. 
CAQuietExec: Error 0x8007007b: CAQuietExec Failed 
Action ended 14:42:43: QtExec1. Return value 3. 
Action ended 14:42:43: INSTALL. Return value 3. 
Property(S): StartIIS7ConfigTransaction = ScaConfigureIIs 

,並在年底的時候才轉儲所有屬性就說明這一點:

屬性(S) :VARRADIOBUTTONENVIRONMENT = QA 屬性(S):VARTEXTSETTINGSFILENAME = Test1234.txt 屬性(S):VerifyCurrentPropValueOfEnv = [VARRADIOBUTTONENVIRONMENT]

這是我的代碼片段。我剛剛將物業標識更改爲全部大寫,並在我看到的另一個帖子的基礎上添加了secure =「yes」。我已經嘗試過,沒有Secure =「是」。

 <Property Id="VARRADIOBUTTONENVIRONMENT" Secure="yes">Dev</Property> 
     <Property Id="VARTEXTSETTINGSFILENAME" Secure="yes">C:\Path\SettingsFileGenerator.xml</Property> 

     ...then later... 

       <Property Id="VerifyCurrentPropValueOfEnv" Value="[VARRADIOBUTTONENVIRONMENT]"/> 
     <Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe /i:web.config /e:[VARRADIOBUTTONENVIRONMENT] &quot;"/> 
     <CustomAction Id="QtExec1" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/> 


<InstallExecuteSequence> 
<Custom Action="QtExec1" After="InstallFinalize"><![CDATA[NOT(Installed)]]></Custom> 
</InstallExecuteSequence> 

在安裝結束時,我看到XmlPreProcess.exe安裝在安裝目錄中。

問題:

  1. 有什麼我做錯得到的值來代替?

  2. 我正在使用CAQuietExec,因爲我被告知它會記錄更好的錯誤並將命令窗口的輸出回顯到安裝日誌。我並不在意沒有看到命令窗口。我不知道如何找出這意味着什麼: 「CAQuietExec:錯誤0x8007007b:命令執行失敗。」。我不知道這是否是嘗試調用XmlPreprocess.exe的WIX錯誤,或者它是否進入了XmlPreprocess,然後拋出錯誤。

感謝,

尼爾·沃爾特斯

回答

8

查看日誌提取物,我想我可以看到這個問題,你所引用的整個命令行,試試這個:

<Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe&quot; /i:&quot;[INSTALLLOCATION]web.config&quot; /e:[VARRADIOBUTTONENVIRONMENT]"/> 
+0

我覺得我厭倦了我的幾十個排列組合中的一個,但現在再試一次。謝謝! – NealWalters 2010-01-14 22:45:38

+0

謝謝,它讓它運行!現在我怎麼能確定我是否傳遞了適當的變量呢? – NealWalters 2010-01-14 23:03:03

+0

@Neal,你應該能夠分析日誌,並從那裏:) – saschabeaumont 2010-01-17 23:01:33