我刚开始玩Burn尝试链接多个MSI文件.我使用的是WiX v3.6.2705.0.
链接正在起作用,但我现在正试图让可选功能起作用.我希望我的MsiPackage标签只能将EnableFeatureSelection设置为"yes",但无论是打开还是关闭都没有任何区别.
还有什么需要做才能使可选功能工作或者这是一个已知问题吗?
谢谢,艾伦
我正在考虑使用Burn作为安装程序的引导程序,我需要将几个参数传入MSI.
我知道这样做的方法是使用MsiProperty元素,我遇到的问题是显示UI来捕获这些属性.我知道我可以通过托管引导程序应用程序主机创建一个完全自定义的UI,但是这对于对引导程序进行相对较小的调整实现了很多工作.
我发现这篇博客文章描述了如何进行基本的UI自定义,并想知道是否可以修改Burn UI以包含一个简单的复选框/文本框(其值用于设置Burn变量,以便我可以将其传递给我MSI)以类似的方式,或者我是否需要使用托管引导程序应用程序主机?
我创建了一个带有WIX的MSI,需要提升权限才能正常工作.在MSI项目中,我指定了这个
<Package [...] InstallPrivileges="elevated" />
Run Code Online (Sandbox Code Playgroud)
现在,我将这个MSI包含在基于WixWPF Bootstrapper的自定义bootsrapper项目中.据我了解,引导程序本身不应该改变机器状态,因此不应该需要提升权限.
我现在希望Bootstrapper能够自动启动具有提升特权的集成MSI,并在必要时提示用户使用UAC对话框.但事实并非如此.相反,安装失败了.但是,当我以管理员身份显式运行引导程序可执行文件时,它可以工作.
在安装MSI时,如何让引导程序要求提升权限?
目前,我们使用Inno Setup作为引导程序来安装MSI先决条件.维护设置有点复杂.我找到了Burn工具,它可以帮助我们通过一个设置来安装我们需要的任何东西来解决这个问题.我找不到这个工具的文档或样本.有人对此有所了解吗?或者有替代解决方案吗?
我正在为ISS bootstrapper现在采取的行动寻找替代解决方案:
为了给你一个背景 - 我有一个4 MSI来自我们的供应商,这必须去我们公司的服务器(我们正在看3500左右的服务器).截至目前,我的同行正在使用vbs,ps1脚本来管理它.但是脚本的问题是每次更新时我们都要担心在运行新的软件包和大量硬编码之前卸载现有的软件包.
我想通过设置一个WIX脚本将所有4个MSI打包在一起来自动化整个过程(硬编码非常少).我读了WIX包并用它来创建一个MSI.但是现在有很多变量要传递给4个MSI,所以我想使用自定义动作来根据运行MSI的环境/机器来设置这些变量.但是我不能让自定义动作起作用?我错过了什么吗?
一点点谷歌搜索,我看到像Bundle中没有CustomActions的东西?有人可以证实吗?
如果没有CA,我的选择是什么?如何操作变量传递给4 MSI?其中大多数需要根据运行的机器设置(如安装路径,用户ID,应用程序池ID等).
我有我的安装程序.msi的x64和x86版本,并希望发送一个只检查机器架构并运行x86/x64 MSI的可执行文件.MSI基本相同,它们安装相同的AnyCPU文件,我将其捆绑在一个共享的.cab文件中,以免使安装程序的大小加倍.
到目前为止,我已经尝试过WiX Burn,它会弹出一个我不想要的GUI(我只想使用MSI GUI),我尝试通过/ silent标志禁用刻录GUI - 这会将此标志传播到MSI所以它禁用了MSI的所有GUI(不是我想要的).
当我说没有默认的No-GUI版本的Burn bootstrapper时,我认为我是正确的,要创建一个你必须自己编辑源代码?这听起来像一个巨大的缺失功能?
我也试过DotNetInstaller,它有一套令人困惑的用户界面问题.我也尝试过setupbld,它不支持带有外部驾驶室的MSI.
我们刚刚将我们的安装程序从WiX 2.x 迁移到WiX 3.6并开始使用Burn.以前,我们通过将.msm文件包含在我们的MSI中来安装Visual C++可再发行组件.这些文件始终与我们用于构建产品的文件同步(Microsoft经常更新它们以包含安全修复程序).C:\Program Files\Common Files\Merge Modules
现在,我们希望仅在需要时使用Burn框架下载Visual C++可再发行组件.但是,Burn没有定义MsmPackage放置在其中的元素Chain.
使用Burn部署Visual C++可再发行组件的最佳方法是什么?
查看Wix Standard Bootstrapper应用程序的源代码,看起来每个包都有一个DisplayName属性:
pPackage->sczDisplayName
Run Code Online (Sandbox Code Playgroud)
但是,WiX安装项目中使用的BootstrapperCore dll没有此属性.有没有办法从托管代码中的包中提取此属性?
我正在使用WiX 3.7的Burn/Managed Bootstrapper应用程序功能来创建基于MBA的自定义安装程序.对于我的捆绑软件链中的每个软件包,在执行MinorUpdate时,我可以轻松检测已安装哪些软件包功能,以确保在升级期间通过使用WiX基类中为引导程序提供的这些事件来保留这些功能选择:DetectPackageComplete,DetectMsiFeature,DetectRelatedBundle,DetectRelatedMsiPackage,DetectComplete.
但是,在MajorUpgrade期间,我只看到一种方法来确定安装了哪些软件包,但是没有看到如何确定安装了哪些功能,因为DetectMsiFeature事件不会触发. 我尝试MigrateFeatures在产品的配置上使用标志,但这似乎不起作用(或者我没有正确使用它).
在WiX中使用自定义托管引导程序应用程序执行MajorUpgrade时检测/迁移现有功能的正确方法是什么?
注意:如果有帮助,我可以提供一个包含所有代码的完整工作的VS解决方案.
Bundle.wxs:<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Bootstrapper1" Version="1.1.0.0" Manufacturer="Knights Who Say Ni" UpgradeCode="e6fbf160-d1d9-4b38-b293-94d60eae876f" Compressed="yes">
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<Payload SourceFile="$(var.ManagedBootstrapperApplication.TargetPath)" />
<!-- other files here -->
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx40Web" />
<MsiPackage SourceFile="$(var.SetupProject1.TargetPath)" EnableFeatureSelection="yes" Vital="yes" Compressed="yes" />
</Chain>
</Bundle>
</Wix>
Run Code Online (Sandbox Code Playgroud)
Product.wxs:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Codepage="1252"
Version="1.1.0.0" Manufacturer="Knights Who Say Ni"
UpgradeCode="5fcd463a-3287-4fdf-bf00-d5d74baeccda">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade AllowSameVersionUpgrades="no" …Run Code Online (Sandbox Code Playgroud) 我告诉wix MSI文件在卸载时删除文件,它只是没有注册它.
对于bundle,我这样调用MSI文件:
<MsiPackage SourceFile="..\..\..\..\Kiosk\MyProject\bin\Release\MyProject.msi" Name="MyProject.msi" DisplayInternalUI="yes" Permanent="no" />
Run Code Online (Sandbox Code Playgroud)
在MSI文件中我称之为:
<ComponentGroup Id="Purge" Directory="INSTALLFOLDER">
<Component Id="PurgeFiles" Guid="">
<RemoveFile Id="RemoveBaseFolder" Name="*" On="uninstall" Directory="INSTALLFOLDER" />
<RemoveFile Id="RemoveLanguage_af" Directory="Language_af" Name="*.*" On="uninstall"/>
<RemoveFile Id="RemoveLanguage_de" Name="*.*" On="uninstall" Directory="Language_de"/>
<RemoveFile Id="RemoveLanguage_es" Name="*.*" On="uninstall" Directory="Language_es"/>
<RemoveFile Id="RemoveLanguage_fr" Name="*.*" On="uninstall" Directory="Language_fr"/>
<RemoveFile Id="RemoveLanguage_it" Name="*.*" On="uninstall" Directory="Language_it"/>
<RemoveFile Id="RemoveLanguage_ja" Name="*.*" On="uninstall" Directory="Language_ja"/>
<RemoveFile Id="RemoveLanguage_ko" Name="*.*" On="uninstall" Directory="Language_ko"/>
<RemoveFile Id="RemoveLanguage_ru" Name="*.*" On="uninstall" Directory="Language_ru"/>
<RemoveFile Id="Removezh_CN" Name="*.*" On="uninstall" Directory="zh_CN"/>
<RemoveFile Id="RemoveDatabase" Name="*.*" On="uninstall" Directory="Database"/>
<RemoveFile Id="RemoveFileData" Name="*.*" On="uninstall" Directory="FileData"/>
<RemoveFile Id="RemoveRecordingTempData" Name="*.*" …Run Code Online (Sandbox Code Playgroud) burn ×10
wix ×10
bootstrapper ×5
wix3.6 ×3
installer ×2
wix3.7 ×2
32bit-64bit ×1
c# ×1
inno-setup ×1
uac ×1