我的更新过程有问题,我的程序是用c#编写的,我使用innosetup作为我的程序安装程序,一切都很好,除了我不能更新我的文件,因为它们在程序文件中..
我已经知道数据应保存在ApplicationData或CommodApplicationData目录中,并且我将它们用于我的配置文件,我设计了一个单独的应用程序(update.exe)来将新文件下载到ApplicationData(这里没问题)但是我希望update.exe能够将下载的文件移动到我的程序文件应用程序文件夹..(update.exe也在程序文件安装目录中)
我知道我需要管理员权限才能做到这一点,我应该向用户询问,但事情是像Firefox这样的其他应用程序已经完成了这项工作而没有要求用户获得管理员权限!他们是怎么做到的?!
先谢谢!
答案 0 :(得分:0)
我认为他们在签署申请后会这样做。 您也可以签署您的计划,并按照他们的方式进行。 如果应用程序已签名,稍后您可以运行更新程序而无需获取 来自用户的管理员权限:)
答案 1 :(得分:0)
让update.exe
程序配置以管理员身份运行。
您需要修改嵌入在程序中的清单。将<requestedExecutionLevel>
元素更改为:
<trustInfo xmlns="urn:0073chemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
UIAccess="true" />
</requestedPrivileges>
</security>
</trustInfo>
并将UIAccess
元素设置为true
。
看到
http://msdn.microsoft.com/en-us/library/ms742884.aspx
答案 2 :(得分:0)
您是否尝试添加嵌入式清单以获得许可?
这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
这将告诉操作系统您的应用程序需要一些权限,例如在应用程序文件夹中复制。
中查看配置方式