VS2010 で Visual Studio Deployment プロジェクトを使用してアプリケーションをインストール/アップグレードしていますが、Windows 2003 以前では、アップグレードを試みる前にサービスを停止することを拒否しているようです。その結果、インストールの完了後に再起動が必要になります。これは、古いサービスで実行していて、アップグレードの一部としてprogram.exe
インストールしようとしている msiexec ログの抜粋です。program.exe
MSI (s) (70:64) [12:00:34:448]: Note: 1: 2727 2:
MSI (s) (70:64) [12:00:34:682]: 1 application(s) had been reported to have files in use.
Info 1603. The file C:\Program Files\company\program.exe is being held in use by the following process: Name: program, Id: 712, Window Title: '(not determined yet)'. Close that application and retry.
MSI (c) (60:BC) [12:00:34:682]: File In Use: -program- Window could not be found. Process ID: 712
MSI (c) (60:BC) [12:00:34:682]: No window with title could be found for FilesInUse
MSI (s) (70:64) [12:00:34:682]: Note: 1: 2727 2:
MSI (s) (70:64) [12:00:34:682]: Doing action: InstallInitialize
Action ended 12:00:34: InstallValidate. Return value 1.
再起動すると、ソフトウェアはインストールされているように見えますが、以前に使用されていたファイルは再インストールされておらず、サービスもインストールされていません。デスクトップにドロップしたショートカットは、宣伝されているショートカットとして機能します。ダブルクリックすると、インストールが不完全であり、正常に修復されたことを MSI に強制的に表示されます。
しかし、一部のユーザーは (たとえば Web サーバーに) 再度ログインせずにこのアップグレードを行っている可能性があります。
- 再起動せずにインストールを完了する、または
- ユーザーがログインする前に、再起動して自動的にインストールを完了します。
これが私が試したことです:
- 実行中
msiexec /i <pkg.msi> /norestart
- これは役に立たず、再起動する前にショートカットを使用しようとすると、インストールを修復しようとして失敗します。 - プロパティを設定してアドバタイズされたショートカットを無効にする
DISABLEADVTSHORTCUTS=1
- これも機能しません。ターゲットは開きますが、インストールはまだ完了していないため、正しく実行されません。インストールのmsiexec /f <pkg.msi>
修復には引き続き使用できます。 RunOnce
でレジストリにキーを追加してHKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
、修復操作を呼び出してインストールを終了します。インストーラーを使用して RunServicesOnce に追加した文字列の値は であり、[SystemFolder]\msiexec.exe /f [ProductCode] /qn
正しく評価されてC:\Windows\system32\msiexec.exe /f {my code} /qn
.- Orca で .msi を編集して (ServiceControl テーブルを介して) サービスを停止し、ファイルが使用されないようにします。保持されています。
私は道に迷ったと思います。明らかな何かが欠けていることを願っています。私をまっすぐにしてください。前もって感謝します!