如何创建可安装位于其附近的文件或通过http获取此文件的msi安装程序
我们想用wix工具包3.9创建一个msi安装程序,它应该分发我们的虚拟机(大小比cab文件中允许的大),管理程序,注册(取消注册)powershell脚本等等。
我们无法使用大文件创建MSI。 我看到两种方法:
我们可以将安装了msi的虚拟机映像放在附近,并编写此安装程序以安装图像(如果它存在于附近)。
d产品:> DIR myapp.msi vm.vdi
我们可以同意客户在运行之前必须手动将vm图像放在msi安装程序附近。
我怎么能这样做?
我是这样做的:
<!-- 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}'.
答案 0 :(得分:0)
如果1适合你,那么WiX CopyFile应该可以工作。副本的源位置是[SourceDir]属性,目标是WiX中定义的某个目录。
如果真的那么大,下载可能会很乏味,但如果你使用它,那就从你安装的应用程序中进行,而不是从MSI安装中运行它。
澄清回应评论:这里只有两条建议是分开的而且没有关系:
如果您选择将文件从MSI文件旁边复制到客户端系统,请使用WiX CopyFile。
如果您选择下载选项,那么从MSI执行此操作将非常繁琐且非常容易出错。鉴于VS自定义操作对网络的访问非常有限(或没有),它甚至可能无法工作。如果你确实决定下载,那么从你正在安装的应用程序而不是MSI下载。