在UAC打开的情况下,在ProgramFiles中编辑配置

| 我的问题与 安装完成后启动应用程序,并打开UAC 与其在安装程序中构建一套复杂的配置屏幕,不如在安装程序完成后启动配置过程。 在所有情况下,这都需要编辑ProgramFiles文件夹中的内容,而当启用UAC而没有提升时,则不能作为标准用户进行编辑。 我们知道但不希望使用的选项: 使用引导程序来提升整个安装程序-我们不希望这样做来支持在提升结束时执行配置的1个操作。 包括配置过程中的强制提升-尽管在某些情况下我们可以将其应用到应用程序中,但在某些情况下,我们希望在App.config上启动一个简单的编辑器,而该强制提升将不可行。 是否有某种方法可以获取更高版本的
<Property Id=\"WixShellExecTarget\" Value=\"[INSTALLDIR]\\app.config\" />
<CustomAction Id=\"LaunchApplication\" BinaryKey=\"WixCA\" DllEntry=\"WixShellExec\" />
或者更合适的方法是创建自定义UI并在UI的前面添加复选框,然后将其作为延迟操作启动而无需等待,例如
<CustomAction Id=\"Config.SetProperty\" Property=\"Config\" Value=\'\"Open\" app.config\' />
<CustomAction Impersonate=\"no\" Execute=\"deferred\" Return=\"ignore\" 
    Id=\"Config\" BinaryKey=\"WixCA\" DllEntry=\"CAQuietExec\" />
或者我们只是忘记了这是一个不好的主意,管理员可以找到该文件并右键单击“提升”进行编辑。     
已邀请:
一种选择可能是像现在一样从安装程序中不提升运行您的应用程序。然后,当您的应用检测到需要编辑配置文件时,它会请求提升。 另一种选择是将配置文件存储在ProgramData目录中,而不是存储在Program Files中。此位置可写,无需抬高。需要注意的是:在此创建的文件和目录仅对创建它们的用户具有写/修改权限;其他用户将具有只读访问权限。如果不希望这样,您可以更改应用程序配置文件的ACL。     
我建议使用单独的配置工具,该工具需要对所有用户的配置进行提升,如果拒绝提升,则继续按用户配置。 在安装程序完成时启动此程序(仅从UI序列,将其绑定到\'Finish \'按钮),以便普通安装启动并在完成时提示提升权限,而无提示安装则需要管理员手动启动配置工具或编辑配置文件本身。 请注意,如果您正在将配置文件作为MSI组件进行安装,如果已对其进行了编辑,则广告快捷方式或运行Windows Installer的“修复”将用MSI中包含的配置文件覆盖该文件。我们的通用解决方案是部署sample.config,并要求管理员编辑此文件,然后将其复制到application.config。如果application.config不存在,则配置工具将启动或显示错误消息。这样做还有一个好处,即配置是在删除/升级时保留的。     

要回复问题请先登录注册