如何创建可以安装附近的文件的msi安装程序?

时间:2014-12-12 13:05:33

标签: wix windows-installer

如何创建可安装位于其附近的文件或通过http获取此文件的msi安装程序

我们想用wix工具包3.9创建一个msi安装程序,它应该分发我们的虚拟机(大小比cab文件中允许的大),管理程序,注册(取消注册)powershell脚本等等。

我们无法使用大文件创建MSI。 我看到两种方法:

  1. 我们可以将安装了msi的虚拟机映像放在附近,并编写此安装程序以安装图像(如果它存在于附近)。

    d产品:> DIR myapp.msi vm.vdi

  2. 我们可以同意客户在运行之前必须手动将vm图像放在msi安装程序附近。

    1. 使用http下载此vm图像。有什么选择?
    2. 我怎么能这样做?

      我是这样做的:

          <!-- This is a list of directories that are used by this product as installation locations or custom -->
          <!-- action file search locations.                                                                   -->
          <Directory Id="TARGETDIR" Name="SourceDir">
              <Directory Id="LocalAppDataFolder" Name="AppData">
                  <Directory Id="AppRootDirectory" Name="Lookd"/>
              </Directory>
          </Directory>
      
      
          <DirectoryRef Id="AppRootDirectory">
              <Component Id="SupplementalScripts" Guid="31693357-578d-4dde-aefc-92f413942810" KeyPath="yes" DiskId="1">
                  <CreateFolder/>
                  <RemoveFolder Id="RemoveAppRootDirectory" On="uninstall" />
      
                  <File Id="SupplementalScripts_Register" DiskId="1" Vital="yes" Source="dst\Scripts\Register.ps1" Checksum="no"/>
                  <File Id="SupplementalScripts_UnRegister" DiskId="1" Vital="yes" Source="dst\Scripts\UnRegister.ps1" Checksum="no"/>
                  <File Id="SupplementalScripts_Throw" DiskId="1" Vital="yes" Source="dst\Scripts\Throw.ps1" Checksum="no"/>
      
                  <RegistryKey Root="HKCU" Key="Software\CVisionLab\Lookd" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
                      <RegistryValue Name="Version" Value="[ProductVersion]" Type="string"/>
                  </RegistryKey>
              </Component>
              <Component Id="VirtualMachineDiskImage" Guid="daa7375f-7bd8-4e97-846a-db5f6e6b025a">
                  <CopyFile Id="VDIFile" SourceName="lookd.vdi" SourceDirectory="SOURCEDIR" DestinationDirectory="TARGETDIR" />
              </Component>
          </DirectoryRef>
      

      但是我在构建时反应和错误:

      error LGHT0094 : Unresolved reference to symbol 'Directory:SOURCEDIR' in section 'Product:{7BBA165B-9A8A-40D1-97FA-233F93426F83}'.
      

1 个答案:

答案 0 :(得分:0)

如果1适合你,那么WiX CopyFile应该可以工作。副本的源位置是[SourceDir]属性,目标是WiX中定义的某个目录。

如果真的那么大,下载可能会很乏味,但如果你使用它,那就从你安装的应用程序中进行,而不是从MSI安装中运行它。

澄清回应评论:这里只有两条建议是分开的而且没有关系:

  1. 如果您选择将文件从MSI文件旁边复制到客户端系统,请使用WiX CopyFile。

  2. 如果您选择下载选项,那么从MSI执行此操作将非常繁琐且非常容易出错。鉴于VS自定义操作对网络的访问非常有限(或没有),它甚至可能无法工作。如果你确实决定下载,那么从你正在安装的应用程序而不是MSI下载。