如何从Wix安装程序引导项目安装vcredist.exe文件
问题描述:
我正在尝试为我的应用程序安装Visual C++可再发行程序以及.msi。但是,当我去安装该项目,我不断收到“另一个安装目前运行错误”。这里是我的bundle.wxs文件:如何从Wix安装程序引导项目安装vcredist.exe文件
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="Application" Version="1.0.0.0" Manufacturer="Manufacturer" UpgradeCode="6c5daa41-4ce9-4f20-94b2-2471a6932542">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- TODO: Define the list of chained packages. -->
<!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
<PackageGroupRef Id="MyPackage" />
<MsiPackage Id="MyApplication" SourceFile=".\Application.msi"/>
</Chain>
</Bundle>
<Fragment>
<PackageGroup Id="MyPackage">
<ExePackage Id="VisualCPlusPlus32Bit"
DisplayName="Microsoft Visual C++"
SourceFile=".\vcredist_x86.exe"
Vital="no"
InstallCommand="/q /ACTION=Install"
DetectCondition="NOT VersionNT64"/>
<ExePackage Id="VisualCPlusPlus64Bit"
DisplayName="Microsoft Visual C++"
SourceFile=".\vcredist_x64.exe"
Vital="no"
InstallCommand="/q /ACTION=Install"
DetectCondition="VersionNT64"/>
</PackageGroup>
</Fragment>
</Wix>
我看过的文档的威克斯这tutorial,但我仍然无法得到Visual C++的第一次安装无需两台安装库同时运行。 谢谢!
答
请参阅How To: Install the Visual C++ Redistributable with your installer。此方法使用合并模块将Visual C++可再发行组件包含在您的msi中,而不是将vcredist作为单独的安装程序运行。
+0
这使我朝着正确的方向前进。我能够得到[this](https://docs.microsoft.com/en-us/cpp/ide/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder)解决方案为我工作。谢谢! – MisterMystery
您确定这些是正确的命令来运行您的安装?我有几个不同的安装命令版本(感谢MS),如“/ install/quiet/norestart”,“/ Q/C:" msiexec/i vcredist.msi/qn "”,“/ quiet”。运行引导程序时,您还可以查看在%temp%中创建的日志文件,查看失败的程序包。 –
@BrianSutherland在弹出Visual C++安装窗口时,似乎正在调用安装。但是,只有在我的应用程序的安装屏幕后才会弹出。似乎vcredist.exe在我的.msi运行之前没有完成。 – MisterMystery
我可能在某个点上遇到过某个vcredist包的这个问题。会发生什么情况是EXE实际解包并启动另一个程序然后退出,而另一个程序继续(真正的安装)引导程序认为安装完成,因为启动的程序退出0并继续安装其他软件包。您应该能够从cmd行运行安装程序进行测试。你可以反复安装vcredist,所以不用担心为了测试而多次运行它。 –