使用WiX安装的应用程序将无法正常运行,除非以管理员身份运行

时间:2010-11-02 23:41:46

标签: wpf windows-7 installer wix windows-installer

This existing question on SO可能正是我所需要的,但没有回答。 ;)

我在初次测试我的WiX安装程序时没有意识到这一点,但我的应用程序在安装后在Windows 7上无法正常运行。各种程序集需要在我的安装文件夹中读/写文件,但在运行时拒绝访问。

如果我以管理员身份运行该应用程序,它可以完美运行。我也可以手动更改应用程序的属性,以便它始终以管理员身份运行。但是,我不希望用户每次都必须单击“是”以进行UAC提示。

我没有得到的部分是,如果我从我的源代码文件夹运行我的可执行文件,我不必以管理员身份运行它,它可以很好地工作。

任何人都可以解释原因: 1.从我的bin / Debug文件夹运行时,我的可执行文件不需要以管理员身份运行并且有效吗? 2.如何让WiX安装可执行文件,以便它的工作方式完全相同? (即不需要右键单击+以管理员身份运行)

谢谢!

1 个答案:

答案 0 :(得分:6)

程序通常不应该使用Program Files文件夹中的内容,但如果确实需要这样做,则需要确保程序安装文件夹的权限是在安装过程中设置的。< / p>

既然我已经谴责你试图这样做了,我会举一个WiX安装程序的例子来说明我维护的一个程序,它写了同样的顽皮日志文件:

<Directory Id="DirectoryLogs" Name="Logs">
    <Component Id="ComponentCreateFolderLogs" Guid="SOME-GUID">
        <CreateFolder>
            <Permission
                GenericAll="yes"
                User="Authenticated Users" />
        </CreateFolder>
        <RemoveFile
            Id="RemoveFileLogsAll"
            Name="*.*"
            On="uninstall" />
    </Component>
</Directory>

因此,安装程序将创建Logs文件夹,授予所有Authenticated Users NTFS权限以对该目录造成严重破坏,并将原始安装后创建的所有日志文件作为其中一部分吹走卸载过程以保持干净卸载。

这是伟大的设计吗?不 - Windows徽标要求对此感到不满 - 但它在内部环境中发生了很多,所以这就是你的做法。

祝你好运!