0

我正在为分为两部分的应用程序创建安装程序。第一部分是安装在服务器上的MSI文件。它包括所有产品可执行文件和数据文件以及客户端应用程序的安装程序。这是使用WiX (v3.7)轻松创建的。客户端安装程序(从网络工作站运行)只需要在工作站上安装一个必备组件,然后在网络驱动器上创建应用程序的快捷方式。我使用Burn创建客户端安装程序,但无法创建快捷方式。

我的问题是我不知道如何让客户端安装程序 (MSI) 了解应用程序所在的网络目录。它是引导程序所在的目录,但包含的客户端安装程序不会从该目录运行。

如何获取此目录,或者是否有更好的方法来处理整个安装顺序?

4

2 回答 2

0

With a custom Bootstrapper Application DLL (BA), you can set a Burn variable by getting the path to the process's entry module. Then in your Bundle, define the burn variable, and pass it to the Windows Installer package as a property. Use the property in your setup project.

To set up a custom BA project, it is far easier to create a .NET project [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>
于 2013-06-07T02:09:20.537 回答
0

您可以从内置的 Burn 变量中 WixBundleOriginalSource获取目录,并按照 Tom 的建议使用 MsiProperty 元素将其传递到您的 MSI。

不过,这为您提供了安装可执行文件的完整路径。从那里,您可以使用自定义操作来提取您需要的路径部分,并设置一个 Msi 属性供您的快捷方式使用。

于 2013-06-11T17:03:25.980 回答