Я сделал все, как описано в tutorial, но мой исполняемый файл не был запущен после завершения установки продукта. Существует нюанс, что мой исполняемый поставляется с модулем .msm, поэтому в .wxs файл для .msi Я следующий запуск приложения:Как запустить исполняемый файл после установки (exe поставляется с .msm)
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product>
<!-- I omit here features and elements which are irrelevant to the question-->
<Feature Id="Configurator" Display="hidden" Level="1">
<MergeRef Id="MergeConfigurator"/>
</Feature>
<UI>
<UIRef Id="WixUI_Minimal"/>
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction"
Value="LaunchConfigurator">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="!(loc.ExitDlgCheckBoxText)" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/>
<Property Id="WixShellExecTarget" Value="[#SystemConfigurator.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146]" />
<CustomAction Id="LaunchConfigurator" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
</Product>
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Merge Id="MergeConfigurator" SourceFile="$(var.MergeModulesPath)\ConfiguratorSetup_$(var.Platform).msm" DiskId="1" Language="1033"/>
</DirectoryRef>
</Fragment>
</Wix>
Для свойства с Id = WixShellExecTarget Я попытался пройти значение как с GUID, так и без него (это пакет/@ Id .msm с моим исполняемым файлом). Я открыл мою .msi с Orca и увидел точный идентификатор моего исполняемого файла (это SystemConfigurator.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146, вот почему я передаю это самое значение).
Но что это не так?
Я вошел процесс установки с помощью/л * v варианта, и есть часть из журнала:
Action 18:47:57: LaunchConfigurator.
Action start 18:47:57: LaunchConfigurator.
MSI (c) (54:68) [18:47:58:106]: Invoking remote custom action. DLL: C:\Users\AAGENO~1\AppData\Local\Temp\MSIB233.tmp, Entrypoint: WixShellExec
MSI (c) (54:08) [18:47:58:106]: Cloaking enabled.
MSI (c) (54:08) [18:47:58:106]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (54:08) [18:47:58:106]: Connected to service for CA interface.
MSI (c) (54!04) [18:47:58:476]: Note: 1: 2715 2: SystemConfigurator.Client.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146
MSI (c) (54!04) [18:47:58:476]: Note: 1: 2715 2: SystemConfigurator.Client.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146
Action ended 18:47:58: LaunchConfigurator. Return value 3.
MSI (c) (54:34) [18:47:58:476]: Note: 1: 2205 2: 3: Error
MSI (c) (54:34) [18:47:58:476]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 2896
DEBUG: Error 2896: Executing action LaunchConfigurator failed.
Спасибо, я проверил файл MSI с помощью Orca - часть файла ключа GUID действительно в верхнем регистре и с подчеркиванием. Я фиксировал значение для свойства WixShellExecTarget - теперь он работает. Но ... могу ли я быть уверенным, что в таблице файлов MSI GUID всегда имеет верхний регистр и с символами подчеркивания? –
Десны не являются законными в именах объектов MSI, а общедоступные свойства должны быть прописными, и я думаю, что API-интерфейсы слияния производят прописные и подчеркивающие символы, поэтому я считаю, что вы в безопасности. – PhilDW