exe
アプリケーションをインストールするwithを作成しましたNSIS
が、アプリケーションが既に実行されている場合は、起動時に更新されます。
これを達成する最も簡単な方法は、レジストリエントリを下に追加することですHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
私のエントリは次のようになります。
Value name: InstallRUS
Value data: cmd /C "C:\Location\of\my\program.exe /S"
この実行可能ファイルは、単純にファイルをディレクトリにコピーし、スクリプトを実行してアプリを Windows サービスとして登録します。
Windowsを再起動すると、最初はサイレント モードで 2 回実行され、2 回目はサイレント フラグが無視されるようです。
ログアウトして再度ログインすると、サイレント モードで 1 回正しく実行されます。
これは、タスクが Windows の起動時とログイン時に実行されるという結論につながりますが、ドキュメントには次のように記載されています。
Run および RunOnce レジストリ キーにより、ユーザーがログオンするたびにプログラムが実行されます。既定では、RunOnce キーの値は、コマンド ラインが実行される前に削除されます。
Windowsの起動は「ユーザーログイン」にカウントされますか?
最初の実行後にエントリが削除されないのはなぜですか?
どうすればこれを修正できますか?
なぜWindowsは私に嘘をついているのですか?
ノート:
- Windows 7 Professional x32 を使用しています
- これに関連しているようです: Windows Registry RunOnce Loop but I am not write to the registry