【问题标题】:How to create msi installer which can install file located near by it?如何创建可以安装附近文件的 msi 安装程序?
【发布时间】:2014-12-12 13:05:33
【问题描述】:

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

我们想使用 wix 工具包 3.9 创建一个 msi 安装程序,它应该分发我们的虚拟机(大小大于 cab 文件中允许的大小)、管理程序、注册(注销)powershell 脚本和其他东西。

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

  1. 我们可以将位于 msi 附近的虚拟机镜像安装并​​编程此安装程序以安装镜像(如果它附近存在)。

    d:> 目录 我的应用程序.msi vm.vdi

我们可以同意客户在运行之前必须手动将位于 msi 安装程序附近的 vm 映像。

  1. 使用 http 下载此 vm 映像。有哪些选择?

我该怎么做?

我是这样做的:

    <!-- 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}'.

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

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

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

    澄清回应评论:这里只有两个独立且不相关的建议:

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

    2. 如果您选择下载选项,则从 MSI 执行此操作会很乏味且容易出错。考虑到 VS 自定义操作对网络的访问非常有限(或没有),它甚至可能不起作用。因此,如果您确实决定下载,请从您正在安装的应用程序而不是 MSI 下载。

    【讨论】:

    • 如果文件将放在installer.msi 附近,为什么您说“下载可能很乏味”。我不明白“从您安装的应用程序执行它而不是从 MSI 安装运行它”是什么意思?您不建议将大文件打包到 msi 安装程序中吗?或者可能是别的什么?
    • 你能举个例子吗?因为这样做时我收到错误。
    • 搜索-wix copyfile example sourcedir-,有几个例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多