2

更新プロセスに問題があります。私のプログラムは C# で書かれており、プログラム インストーラーとして innosetup を使用しました。ファイルがプログラム ファイルにあるために更新できないことを除けば、すべて問題ありません。

データを ApplicationData または CommodApplicationData ディレクトリに保存する必要があることは既に知っており、構成ファイルにそれらを使用しています。別のアプリケーション (update.exe) を設計して、新しいファイルを ApplicationData にダウンロードします (ここでは問題ありません) が、更新が必要です。ダウンロードしたファイルを自分のプログラム ファイルのアプリケーション フォルダに移動できるようにするための ..exe (update.exe もプログラム ファイルのインストール ディレクトリにあります)

これを行うには管理者権限が必要であることはわかっています。ユーザーにそのように依頼する必要がありますが、Firefox などの他のアプリケーションは、ユーザーに管理者権限を要求せずに既にこれを行っています。彼らはどのようにそれを行うのですか?!

ありがとうございます!

4

3 に答える 3

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>

これにより、アプリケーション フォルダにコピーするなど、アプリケーションに何らかの権限が必要であることを OS に伝えます。

で構成方法を確認できます: http://msdn.microsoft.com/en-us/library/bb756929.aspx

于 2013-06-14T11:43:10.240 に答える
0

彼らはアプリケーションに署名した後にそれを行うと思います。プログラムに署名して、彼らと同じように行うこともできます。アプリケーションが署名されている場合、後でユーザーから管理者権限を取得せずに更新プログラムを実行できます:)

  • スキップする必要があるのは、Microsoft のデジタル証明書です。
于 2013-06-14T11:37:15.677 に答える
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を参照して ください。

于 2013-06-14T11:41:29.443 に答える