我正在为应用程序创建一个安装程序,该安装程序分为两部分。第一部分是安装在服务器上的MSI文件。它包括所有产品可执行文件和数据文件以及客户端应用程序的安装程序。这很容易使用WiX(v3.7)创建。客户端安装程序(从网络工作站运行)只需在工作站上安装必备组件,然后创建网络驱动器上应用程序的快捷方式。我使用Burn来创建客户端安装程序,但我无法创建快捷方式。
我的问题是我不知道如何让客户端安装程序(MSI)知道应用程序所在的网络目录。它是引导程序所在的目录,但是包含的客户端安装程序不会从该目录运行。
如何获取此目录,或者是否有更好的方法来接近整个安装顺序?
答案 0 :(得分:0)
使用自定义Bootstrapper应用程序DLL(BA),您可以通过获取进程的入口模块的路径来设置Burn变量。然后在Bundle中定义burn变量,并将其作为属性传递给Windows Installer程序包。在安装项目中使用该属性。
要设置自定义BA项目,创建.NET项目[tutorial]要容易得多。
<Variable
Name="BootstrapperDirectory"
Persisted="yes"
Type="string"
bal:Overridable="yes"
Value='BootstrapperDirectory not set. Try passing it on the
command line like "BootstrapperDirectory=%cd%"
or writing a custom BA to set it programmatically.
It must also be declared with bal:Overridable="yes".' />
<Chain>
<MsiPackage SourceFile="$(var.SetupProject1.TargetPath)" DisplayInternalUI="yes">
<MsiProperty Name="BOOTSTRAPPERDIR" Value="[BootstrapperDirectory]" />
</MsiPackage>
</Chain>
答案 1 :(得分:0)
您可以从the built-in Burn Variable WixBundleOriginalSource
获取目录,并使用Tom建议的MsiProperty元素将其传递到MSI。
它为您提供了安装程序可执行文件的完整路径。从那里,您可以使用自定义操作来提取所需路径的一部分,并为您使用的快捷方式设置Msi属性。