###実現したい事
既にインストール済みの自作アプリ(.msi)のバージョンアップをする際、既存ファイル(.ps1)がタスクスケジューラから実行中だと更新されないので、インストール前後のファイル更新日時を比較し、古いままなら失敗とみなし、アプリバージョンやコンテンツファイルを元に戻したい(バージョンアップさせない)。
###問題
新規インストールの場合、下記★1のルートを通り、インストール前の状態に戻ってくれるが、既存からのバージョンアップの場合、下記エラールートを通らず、インストールが成功してしまう(NewFile.txtが作成されない事で確認)
###実際のインストールで使うコマンド
msiexec /passive /i AAtamesiInst.msi
C#
1public override void Install(System.Collections.IDictionary 2stateSaver) { 3 string filePath = @"C:\Program Files\存在しないファイル.ps1"; 4 5 base.Install(stateSaver);//インストール実行 6 7 //実際はInstall()実行前後でps1ファイルの更新日時を比較しようと 8 //しているが、分かりやすくファイルの存在チェックで代替 9 10 if (File.Exists(filePath)) { 11 } else { 12 //ルート★1 13 string Lpath = @"C:\Program Files\AAtamesiInstDEV\NewFile.txt"; 14 // FileInfoのインスタンスを生成する 15 FileInfo fileInfo = new FileInfo(Lpath); 16 17 // ファイルを作成する 18 FileStream fileStream = fileInfo.Create(); 19 20 throw new InstallException(); //インストール例外 21 } 22}
###補足情報(FW/ツールのバージョンなど)
上記のソースをビルドしたexeをカスタム動作のInstallから呼んでいます。
Windows10、.NET4.6
###少し気になっている点
更新されなかった1ファイルはログイントリガーのタスクスケジュールから実行され、
終了まで数分かかるが、Intuneによるバージョンアップとログインは関係ないと予想
回答1件
あなたの回答
tips
プレビュー