perMachine安装程序中的ICE91 Wix

时间:2017-05-03 19:12:08

标签: windows wix installer

我正在尝试创建一个能够在每个用户的PersonalFolder和LocalAppDataFolder中创建文件和文件夹的perMachine安装程序。我总是收到警告信息“警告LGHT1076:ICE91:......”,如下所示。当我以管理员身份安装时,尽管出现警告,仍会创建文件和文件夹,但是当我以标准用户身份尝试安装程序时,没有文件,也没有在用户配置文件上创建文件夹。可能是什么解决方案?

                      

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="PFInstallDir" Name="Example">
                <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222">
                    <File Id="ApplicationFile1" Source="notepad.exe"/>
                </Component>
            </Directory>
        </Directory>

        <Directory Id="CommonFilesFolder">
            <Directory Id="CFInstallDir" Name="Example">
                <Component Id="CommonApplicationFiles" Guid="12345678-1234-1234-1234-222222222223">
                    <File Id="ApplicationFile2" Source="notepad.exe"/>
                </Component>
            </Directory>
        </Directory>

        <Directory Id="CommonAppDataFolder">
            <Directory Id="CAInstallDir" Name="Example">
                <Component Id="CommonAppDataApplicationFiles" Guid="12345678-1234-1234-1234-222222222224">
                    <File Id="ApplicationFile3" Source="notepad.exe"/>
                </Component>
            </Directory>
        </Directory>

        <Directory Id="PersonalFolder">
            <Directory Id="InstallDirPersonal" Name="ExampleDocs">
                <Component Id="ApplicationPersonalFiles" Guid="12345678-1234-1234-1234-222222222225">
                    <CreateFolder />
                    <RemoveFolder Id="RemoveMyExampleDir1" On="uninstall" Directory="InstallDirPersonal"/>
                    <RegistryKey Root="HKCU" Key="Software\MyCompany\Documents">
                        <RegistryValue Name="MainExe" Value="1" KeyPath="yes" Type="integer" />
                    </RegistryKey>
                    <File Id="Notepad.MyExe"
                        Source="notepad.exe" DiskId="1" Checksum="yes">
                    </File>
                </Component>
            </Directory>
        </Directory>            

        <Directory Id="LocalAppDataFolder" Name="AppData">
            <Directory Id="InstallDirAppDataPersonal" Name="ExampleLocals">
                <Component Id="ApplicationPersonalDataFiles" Guid="12345678-1234-1234-1234-222222222226">
                    <CreateFolder />
                    <RemoveFolder Id="RemoveMyExampleDir" On="uninstall" Directory="InstallDirAppDataPersonal"/>
                    <RegistryKey Root="HKCU" Key="Software\MyCompany\Example">
                        <RegistryValue Name="MainExe" Value="1" KeyPath="yes" Type="integer" />
                    </RegistryKey>
                    <File Id="Notepad.MyExe1"
                        Source="notepad.exe" DiskId="1" Checksum="yes">
                    </File>
                </Component>
            </Directory>
        </Directory>
    </Directory>

    <Feature Id="DefaultFeature" Level="1">
        <ComponentRef Id="ApplicationFiles"/>
        <ComponentRef Id="CommonApplicationFiles"/>
        <ComponentRef Id="CommonAppDataApplicationFiles"/>
        <ComponentRef Id="ApplicationPersonalDataFiles"/>
        <ComponentRef Id="ApplicationPersonalFiles"/>
    </Feature>

</Product>

- Build build:Project:SetupProjectPerUsrMachine,Configuration:Debug x86 -

警告LGHT1076:ICE91:文件'Notepad.MyExe'将安装到每个用户目录'InstallDirPersonal',该目录不会因ALLUSERS值而异。即使每台机器都需要安装,也不会将此文件复制到每个用户的配置文件中。

警告LGHT1076:ICE91:文件'Notepad.MyExe1'将安装到每个用户目录'InstallDirAppDataPersonal',该目录不会因ALLUSERS值而异。即使每台机器都需要安装,也不会将此文件复制到每个用户的配置文件中。

1 个答案:

答案 0 :(得分:0)

问题解决了! http://www.installworld.com/index.php?option=com_content&do_pdf=1&id=146

“如果必须将资源复制到每个用户的配置文件,然后向您的软件包添加功能来执行此操作。为此,请添加当前用户注册表项(即,只是一个虚拟注册表项)并使此注册表项为包含资源的组件的密钥路径。这意味着资源将作为MSI自我修复机制的一部分复制到下一个用户的配置文件,前提是该产品存在广告的入口点。“

http://blog.bittercoder.com/2007/02/28/wix-shortcuts/

<Component Id="StandAloneApplication" Guid="C8D5DB05-2D68-40e8-88D1-EF5BEA18DBE1">
  <File Id="SomeCompanySomeProductHostApp" 
        Name="SomeCompany.SomeProduct.HostApp.exe" 
        DiskId="1" 
        Source="....buildSomeCompany.SomeProduct.HostApp.exe" 
        Vital="yes">

    <Shortcut Advertise="yes" 
              Id="SomeCompanySomeProductHostAppShortcut" 
              Directory="ProgramMenuDir" 
              Name="My Product" 
              WorkingDirectory="INSTALLDIR" 
              Description="SomeProduct Application" 
              Icon="HostAppShortcutIcon.exe">

      <Icon Id="HostAppShortcutIcon.exe" 
            SourceFile="....buildSomeCompany.SomeProduct.HostApp.exe" />

    </Shortcut>
  </File>
</Component>