2015-06-17 5 views
0

Я сделал все, как описано в 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. 

ответ

0

Ошибка 2715 означает, что ключевой файл вы используете на самом деле не в таблице файлов. Предполагая, что это относится к SystemConfigurator.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146 Я бы открыл файл MSI с помощью Orca и посмотрел, правильно ли это значение. Имейте в виду, что прокси-серверы установщика Windows чувствительны к регистру, поэтому, если это действительно верхний регистр, затем используйте верхний регистр. Убедитесь, что это действительно тире тоже, а не подчеркивание.

+0

Спасибо, я проверил файл MSI с помощью Orca - часть файла ключа GUID действительно в верхнем регистре и с подчеркиванием. Я фиксировал значение для свойства WixShellExecTarget - теперь он работает. Но ... могу ли я быть уверенным, что в таблице файлов MSI GUID всегда имеет верхний регистр и с символами подчеркивания? –

+0

Десны не являются законными в именах объектов MSI, а общедоступные свойства должны быть прописными, и я думаю, что API-интерфейсы слияния производят прописные и подчеркивающие символы, поэтому я считаю, что вы в безопасности. – PhilDW