WiX安装程序:修改安装以包括初始安装时跳过的包
我正在使用托管引导程序应用程序构建一个WiX捆绑安装程序。最近,我添加了一个新的WiX安装程序:修改安装以包括初始安装时跳过的包,wix,windows-installer,installation,burn,Wix,Windows Installer,Installation,Burn,我正在使用托管引导程序应用程序构建一个WiX捆绑安装程序。最近,我添加了一个新的msispackage,它在每台机器上安装,但仅在用户选中via复选框时安装。用户可以稍后从“程序和功能”修改安装以安装此软件包。这是捆绑包中仅有的每台机器的软件包。其余的是每个用户。允许在没有提升权限的情况下安装对我们来说是至关重要的,这就是为什么每台机器的软件包是可选的。在修改期间请求提升的权限是可以的 最初,我是这样配置新包的: <MsiPackage Id="optional_package"
msispackage
,它在每台机器上安装,但仅在用户选中via复选框时安装。用户可以稍后从“程序和功能”修改安装以安装此软件包。这是捆绑包中仅有的每台机器的软件包。其余的是每个用户。允许在没有提升权限的情况下安装对我们来说是至关重要的,这就是为什么每台机器的软件包是可选的。在修改期间请求提升的权限是可以的
最初,我是这样配置新包的:
<MsiPackage Id="optional_package"
Cache="yes" Compressed="yes" Visible="no"
DisplayInternalUI="no"
SourceFile="..\Resources\OptionalPackage.msi" />
这解决了第一个问题,但产生了一个新问题。由于OptionalPackage.msi是每台机器安装的,因此burn尝试将其缓存在C:\ProgramData\Package cache
(每台机器缓存)中,而不是在%LocalAppData%\Package cache
(每用户缓存)中。这有两个问题:
C:\ProgramData\Package Cache
是每台计算机的一个位置,需要提升权限。因为我们总是缓存这个新包,所以用户总是需要提升的权限才能安装C:\ProgramData\Package Cache
。以管理员身份运行是一种解决方法我试图在这里提供一些上下文,以防有更好的方法来做到这一点。我的总体目标是允许用户通过modify安装第一次安装时跳过的包。如果有更好的方法,请通知我。我解决了这个问题,所以我想我应该在这里发布一个答案,让其他人找到。我最终通过按需下载选项包而不是缓存来解决缓存问题。只需设置
Compressed=“no”
并设置下载URL
<MsiPackage Id="optional_package"
Cache="yes" Compressed="no" Visible="no"
DisplayInternalUI="no"
SourceFile="..\Resources\OptionalPackage.msi"
DownloadUrl="https://example.com/download/OptionalPackage.msi" />
当需要安装软件包时,WiX将自动下载。请记住,SourceFile
定义的文件和DownloadUrl
定义的文件必须完全匹配。WiX散列源文件
,并将其存储在安装程序中。下载后,它会在DownloadUrl
处对文件进行散列,并且仅当散列匹配时才会安装该文件
这个解决方案并不理想,因为它需要一个内部连接,但没有其他方法来满足我们的需求。我们的主要问题是,这个.msi是一个每台机器的软件包,我们的安装程序是按用户运行的。我们与FireGiant进行了磋商,并了解了我上述其他几个问题的答案:
<MsiPackage Id="optional_package"
Cache="yes" Compressed="no" Visible="no"
DisplayInternalUI="no"
SourceFile="..\Resources\OptionalPackage.msi"
DownloadUrl="https://example.com/download/OptionalPackage.msi" />