2010-12-04 11 views
1

私はTEMPディレクトリに解凍し、自身を実行してからTEMPディレクトリから自分自身を削除するプログラムを持っています。 NSISで生成した単一ファイルの実行ファイルが実行しようとすると、UACは次のように尋ねます。「未知のパブリッシャの次のプログラムがコンピュータを変更できるようにしますか?NSISインストーラがコンピュータを変更するように頼みます

説明:インストーラはTEMPディレクトリのみをアンパックし、含まれているプログラムはUACを起動しません。私はそれがNSISの何かと関係していると思うが、何を止めたらいいか分からない。 NSISスクリプトのほとんどすべての行を削除しましたが、それでもUACは怒ります。

問題がある場合は、Windows 7のpython2.5でpyymexeとpygameライブラリを使用しています。 (ただし、NSISの実行時にUACを起動するだけです)

どのUACが武器を持っていても、それを起動させないようにするにはどうすればよいですか?署名鍵が必要ですか?

答えて

5

RequestExecutionLevelユーザー

NSISは(誤って)管理者権限が必要ですインストーラとしてWindowsによって検出されたためです。 MSはNSIS開発者に尋ねることなくこの検出を追加しました!

あなたは$ pluginsdirを使用する場合があります、それはNSISによって削除autoです:

Section 
InitPluginsDir 
SetOutPath $pluginsdir 
File myapp.exe 
ExecWait '"$pluginsdir\myapp.exe"' 
SetOutPath $temp ;make sure pluginsdir is not locked 
SectionEnd 
+0

うわー、ありがとう!私が探していた答えではありませんが、stackoverflowは常に私に新しいことを教えています。 –

0

Windowsは、 "インストーラ検出" ヒューリスティックを持っています。 exeファイルに埋め込まれたマニフェストを追加するか、whatever.exe.manifestという名前の「私は昇格する必要はありません。 How to prevent Vista from requiring elevation on patch.exe?は、私がこれをカバーする多くの多くの質問の中の最初のものです。

インストーラの検出ヒューリスティックはほとんどすべてファイル名に基づいているため、何らかの理由でマニフェストを使用したくない場合は、ファイルの名前を変更して、setup、update、patchなどの文字列を含めないようにしてください。等が挙げられる。

+0

名前はその一部にすぎず、アプリ/会社名や署名チェックまでもチェックします – Anders

関連する問題