InstallScope =" perMachine"在wix中没有任何区别

时间:2015-05-27 13:39:00

标签: wix windows-installer installer

嗨我需要我的应用程序只是在管理员模式和所有用户模式下工作。(即)它应该在所有模式下工作。 我已经在 WIX 中创建了设置,在浏览了很多之后我才知道在包中设置 InstallScope =" perMachine" 会使我们的应用程序在所有模式。但我发现只有它在所有登录(管理员或其他用户)的添加\删除程序下显示我们的应用程序。

(即):我能够以管理员模式运行我的应用程序,如果我以任何用户身份登录,那么我的应用程序无法正常工作。它只会出现在添加\删除程序

我的要求是我需要我的应用程序在所有模式,管理员,登录,所有用户中工作。

 <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" ></Package>

即使我在InstallScopeDlg中尝试了allUser选项。 我需要我的应用程序应该适用于包括管理员在内的所有用户

2 个答案:

答案 0 :(得分:4)

在Setup.wxs文件中添加以下行

<Property Id="ALLUSERS" Value="1"></Property>

该文件应如下所示:

<?xml version="1.0"?>  
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
         Name="programName"
         Language="1033"
         Version="1.0.0.0"
         UpgradeCode="183CC369-D86F-43B3-99E7-A82A16335E52"
         Manufacturer="CompanyName">
    <Package Description="#Description"
             Comments="Comments"
             InstallerVersion="200"
             Compressed="yes"/>
    <!--
        Source media for the installation. 
        Specifies a single cab file to be embedded in the installer's .msi. 
    -->
    <Media Id="1" Cabinet="contents.cab" EmbedCab="yes" CompressionLevel="high"/>

    <!-- Installation directory and files are defined in Files.wxs -->
    <Directory Id="TARGETDIR" Name="SourceDir"/>

    <Feature Id="Complete"
             Title="programName"
             Description="programName"
             Level="1">
        <ComponentRef Id="programNameFiles"/>
        <ComponentRef Id="programNameRegEntries"/>
    </Feature>

    <!--
        Using the Wix UI library

        WixUI_InstallDir does not allow the user to choose 
        features but adds a dialog to let the user choose a 
        directory where the product will be installed
    -->
    <Property Id="WIXUI_INSTALLDIR">INSTALLDIR</Property>
    <Property Id="ALLUSERS" Value="1"></Property>
    <UIRef Id="WixUI_InstallDir"/>
</Product>

答案 1 :(得分:1)

受限用户无法更新Program Files文件夹。仅仅因为您安装了每台机器并不意味着Windows Installer会通过允许有限的用户在那里写入来违反安全规则!

最可能发生的事情是管理员成功安装到Program Files,因为他们有权这样做。有限的用户无法写入Program Files,因此文件被转移,最有可能是C:\ ProgramData

如果对有限的用户说“该应用程序无法运行”,我猜它可能是一个安全问题 - 它需要管理员权限,因为它尝试编写/更新受限制的位置或注册表项。换句话说,如果您的应用将其活动限制为允许限制用户使用的活动,那么您的应用仅适用于受限用户。如果应用程序无法正常工作,那么就调试它 - 这里的任何人都不可能在没有更多信息的情况下说出它失败的原因。这是一个应用程序问题,而不是安装问题。