我是Wix的新手。我使用版本3.9来运行自定义操作。我能够复制文件并安装和卸载,但我试图让自定义操作运行,没有运气。
下面是一个小例子,ComponentGroup位于另一个由heat创建的文件中。我使用日志记录运行安装程序,并在日志文件中看不到有关安装失败的操作,当我运行卸载时,我看到cmd提示打开。
我也对Wix条件及其评估方式感到困惑。从各种来源,这是我看到的条件和它
在条件中使用时,如果MyProperty为false,则不是MyProperty将返回false。并且,如果MyProperty为真,则在某种情况下MyProperty将返回false。这让我感到困惑,卸载过程中自定义操作会让我感到困惑。
任何帮助都将不胜感激。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" >
<Product Id="*" Name="GtLite" Language="1033" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="0cd4e6db-ec32-42b4-bcb8-1f51f37c7b44">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<!-- Specify minimal UI -->
<UIRef Id="WixUI_Minimal" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<!-- Features to install -->
<Feature Id="ProductFeature" Title="FunTimes" Level="1">
<ComponentGroupRef Id="BinFilesGroup" />
</Feature>
<CustomAction Id="RunDataUtility"
Directory="FUN_FOLDER" ExeCommand="cmd.exe /k "echo hello > [FUN_FOLDER]echo_test.txt"" Execute="immediate" Return='asyncNoWait' />
<InstallExecuteSequence>
<Custom Action="RunDataUtility" After="InstallFiles" >NOT INSTALLED</Custom>
</InstallExecuteSequence>
<Directory Id="TARGETDIR" Name="SourceDir">
<!-- Define Installation folder under Program Data -->
<Directory Id="ProgramFolder">
<Directory Id="INSTALL_FOLDER" Name="Acme" >
<Directory Id="FUN_FOLDER" Name="FunTimes" >
</Directory>
</Directory>
</Directory>
</Directory>
</Product>
</Wix>
答案 0 :(得分:1)
您是否通过命令行传递BIN_FOLDER?我问,因为我无法看到被设置在这里。 虽然我没有测试过这个命令,但我猜这应该可行。请试一试,让我知道。
<CustomAction Id="ConfigureApp_Cmd" Property="ConfigureApp" Execute="immediate"
Value=""cmd.exe /k" "echo hello > [BIN_FOLDER]echo_test.txt" nopause;" />
<CustomAction Id="ConfigureApp" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="asyncNoWait" Impersonate="no"/>
<InstallExecuteSequence>
<Custom Action="ConfigureApp_Cmd" After="StartServices"><![CDATA[NOT(Installed)]]></Custom>
<Custom Action="ConfigureApp" After="ConfigureApp_Cmd"><![CDATA[NOT(Installed)]]></Custom>
</InstallExecuteSequence>
您可能必须传递类似于BIN_FOLDER = C:\ Acme \ bin的内容才能使其正常工作。