私の欲求不満レベルは10に近づいています。私は数週間前からwixインストーラーに取り組んできました。このインストーラは、当社ソフトウェアの前提条件をインストールします。私はVisual Studioを持っていないので、ビルドファイルを作って(コマンドラインだけを読む)wixプロジェクトを作った。このバンドルには.msi、.msu、および.exeファイルを含む約9つの前提条件があります。Wix ExePackageは、インストール時にDetectCondition、InstallCondition、またはアンインストールに関係なく常にインストールされます。
私の質問は、具体的にチェーン要素で説明されているExePackageに関連しています。 DetectCondition、InstallCondition、InstallおよびUnistallに関係なく、いくつか(ただしすべてではありません)のExePackagesが常にインストールされます。ログファイルにはDetectCondition = trueとInstallCondition = falseが表示されますが、これらの問題のExePackagesは実行され、インストールされます。すべて。時間。
私は過去2週間の不満の中で、ExePackagesはインストーラによって.msiファイルと同じ可視性を許可しておらず、それが私が扱っているものとまったく同じ問題を引き起こす可能性があります。アンインストール時にExePackageがどのように実行され、実際の.exeファイルに適切な内部フラグがない場合、アンインストールの代わりにインストールされることに言及している人を覚えているようです。しかし、私が正しく覚えていれば、それらの答えは彼らの質問には良いものでしたが、特定の条件下でExePackageの実行を完全に防ぐ何かを見つけることができませんでした。
EDIT 1:私はWiXバージョン3.7を使用しています。
私はこれを行う方法についての手がかりを与える例やライフラインを希望します。ここで問題ExePacakgeの例です:あなたの助けを事前に
[0910:0794][2017-09-20T06:30:33]i000: Setting numeric variable 'CHROMEEXISTS' to value 1
[0910:0794][2017-09-20T06:30:33]i000: Setting version variable 'CHROMEVERSION' to value '51.0.2704.103'
[0910:0794][2017-09-20T06:30:33]i052: Condition 'CHROMEEXISTS AND CHROMEVERSION="51.0.2704.103"' evaluates to true.
[0910:0794][2017-09-20T06:30:33]i101: Detected package: Chrome, state: Present, cached: None
[0910:0794][2017-09-20T06:30:34]i052: Condition '(NOT CHROMEEXISTS) OR (NOT CHROMEVERSION="51.0.2704.103")' evaluates to false.
[0910:0794][2017-09-20T06:30:34]w321: Skipping dependency registration on package with no dependency providers: Chrome
[0910:0794][2017-09-20T06:30:34]i000: Setting string variable 'WixBundleLog_Chrome' to value 'C:\Users\User\AppData\Local\Temp\MyProgram_20170920063033_2_Chrome.log'
[0910:0794][2017-09-20T06:30:34]i000: Setting string variable 'WixBundleRollbackLog_Chrome' to value 'C:\Users\User\AppData\Local\Temp\MyProgram_20170920063033_2_Chrome_rollback.log'
[0910:0794][2017-09-20T06:30:34]i201: Planned package: Chrome, state: Present, default requested: Absent, ba requested: Absent, execute: Uninstall, rollback: Install, cache: Yes, uncache: Yes, dependency: None
[01B4:0E6C][2017-09-20T06:30:54]i305: Verified acquired payload: Chrome at path: C:\ProgramData\Package Cache\.unverified\Chrome, moving to: C:\ProgramData\Package Cache\9102865AE2381BC34E91C107DA5818CF971356E8\ChromeStandaloneSetup64-v51.0.2704.103.exe.
[01B4:0F1C][2017-09-20T06:31:19]i301: Applying execute package: Chrome, action: Uninstall, path: C:\ProgramData\Package Cache\9102865AE2381BC34E91C107DA5818CF971356E8\ChromeStandaloneSetup64-v51.0.2704.103.exe, arguments: '"C:\ProgramData\Package Cache\9102865AE2381BC34E91C107DA5818CF971356E8\ChromeStandaloneSetup64-v51.0.2704.103.exe"'
[0910:0794][2017-09-20T06:31:33]i319: Applied execute package: Chrome, result: 0x0, restart: None
[01B4:0F1C][2017-09-20T06:31:59]i351: Removing cached package: Chrome, from path: C:\ProgramData\Package Cache\9102865AE2381BC34E91C107DA5818CF971356E8\
[0910:0794][2017-09-20T06:32:02]i410: Variable: CHROMEEXISTS = 1
[0910:0794][2017-09-20T06:32:02]i410: Variable: CHROMEVERSION = 51.0.2704.103
[0910:0794][2017-09-20T06:32:02]i410: Variable: WixBundleLog_Chrome = C:\Users\User\AppData\Local\Temp\MyProgram_20170920063033_2_Chrome.log
[0910:0794][2017-09-20T06:32:02]i410: Variable: WixBundleRollbackLog_Chrome = C:\Users\User\AppData\Local\Temp\MyProgram_20170920063033_2_Chrome_rollback.log
ありがとう:
...
<Bundle Name='MySoftware' Version='1.0.0.0' Manufacturer='MyCompany'
UpgradeCode='{GUID}'
Condition='(VersionNT >= v6.1 AND ServicePackLevel >= 1)'>
...
<util:FileSearch Id='CheckChromeVersion' Path='[ProgramFilesFolder]Google\Chrome\Application\chrome.exe' Variable='CHROMEVERSION' Result='version' />
<util:FileSearch Id='CheckChromeExists' Path='[ProgramFilesFolder]Google\Chrome\Application\chrome.exe' Variable='CHROMEEXISTS' Result='exists' />
...
<Chain>
...
<ExePackage Id='Chrome'
Compressed='yes'
SourceFile='.\installers\ChromeStandaloneSetup64-v51.0.2704.103.exe'
PerMachine='yes'
DetectCondition='CHROMEEXISTS AND CHROMEVERSION="51.0.2704.103"'
InstallCondition='(NOT CHROMEEXISTS) OR (NOT CHROMEVERSION="51.0.2704.103")' />
...
</Chain>
</Bundle>
...
そしてここでは、ログファイルからの「クローム」のすべてのインスタンスです。
'InstallCondition'の場合:条件がfalseと評価され、バンドルがインストール、修復、または変更されている場合、パッケージはアンインストールされます。つまり、パッケージをアンインストールする必要がありますが、アンインストールコマンドはありません。私は、バンドルがインストーラを無視しているいくつかのパラメータでインストーラを実行していることを意味すると思います。 'UninstallCommand'を' ChromeStandaloneSetup64-v51.0.2704.103.exe'(それが可能であれば)を取り除くのに必要なパラメータで追加してみてください。 – philselmer
実際には、 'DetectCondition'がfalseと評価された(または省略された)場合にのみバンドルがパッケージをインストールするので、' InstallCondition'を削除できます。 Burnは、この条件を使用してバンドルアクション中にこのパッケージをどのように扱うかを決定します。たとえば、この条件がfalseまたは省略され、バンドルがインストールされている場合、Burnはこのパッケージをインストールします。 – philselmer
ありがとうphilselmer。 InstallConditionの削除は正常に機能しました。ブライアン・サザーランドの答えは正しいと書いてありました。応答していただきありがとうございます。 – Scottlysan