我有一个小问题,就是我必须从另一个MSI文件中调用MSI文件。
它们都是独立的,意味着它们不属于同一装置。
是否可以使用CustomAction进行制作?
我知道如果我使用bootstrapper可以,但我不能这样做。
<
?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="MySetup" Language="1033" Version="1.0.0.0" Manufacturer="Sofiane" UpgradeCode="c151e7ab-b83a-445f-93b2-2ab7122ea34b">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Property Id="EXEPATH" Secure="yes"/>
<Feature Id="ProductFeature" Title="MySetup" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Binary Id="InstallTools" SourceFile="$(var.SolutionDir)InstallTools\bin\$(var.Configuration)\InstallTools.CA.dll"/>
<CustomAction Id="SetupProps" BinaryKey="InstallTools" DllEntry="OpenExeUrl" Execute="immediate" Impersonate="yes" Return="check" />
<CustomAction Id="OpenExe" Return="ignore" Directory="exeDirectory" ExeCommand=""[EXEPATH]"" Impersonate="yes" Execute="deferred"/>
<InstallExecuteSequence>
<Custom Action="SetupProps" Before="OpenExe"/>
<Custom Action="OpenExe" After="InstallExecute"/>
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="MySetup" />
</Directory>
<Directory Id="exeDirectory" FileSource="@(EXEDIR)" />
</Directory>
</Fragment>
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="myAppFile">
<File Source="$(var.MyApplication.TargetPath)" />
</Component>
</DirectoryRef>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<ComponentRef Id="myAppFile" />
</ComponentGroup>
</Fragment>
</Wix>
在自定义操作OpenExe中,EXEPATH是要调用的第二个MSI文件。
请问任何建议?
答案 0 :(得分:1)
如果您想从CA启动它,可以使用
var process = Process.Start(filePath);
但我不确定它对你有好处吗?
顺便说一下。我不确定它是否会导致安装问题,也许你应该用After="ExecuteAction"
参数调用你的CA,我之前做过这件事,我记得唯一的事情就是我有的问题请结束第一次安装错误,该代码修复它我相信。