我正在创建一个带有复选框的双模式安装程序,以使用户在安装后启动应用程序。
在机器范围内安装(管理模式)时,应用程序将按预期启动。
仅为用户安装(非管理员模式)时,该应用程序无法启动:
Action ended 9:04:52: LaunchApplication. Return value 3.
MSI (c) (F0:94) [09:04:52:151]: Note: 1: 2205 2: 3: Error
MSI (c) (F0:94) [09:04:52:151]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 2896
DEBUG: Error 2896: Executing action LaunchApplication failed.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2896. The arguments are: LaunchApplication, ,
我看过这个问题,它有同样的错误,但是我的文件名已经放在方括号中:
<Property Id="WixShellExecTarget" Value="[#FILE_SweetApp.WPF.exe]" />
有任何想法吗?
编辑
这是相关代码:
<?define MyPath="$(var.SolutionDir)MyApp.WPF\bin\$(var.Configuration)"?>
<ComponentGroup Id="MyApp.WPF" Directory="APPLICATIONFOLDER">
<Component Id="MainExecutable" Guid="{my guid}">
<File Id="FILE_App.WPF.exe" Source="$(var.MyPath)\myapp.exe" />
</Component>
...
</ComponentGroup>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch app when setup exits." />
<Property Id="WixShellExecTarget" Value="[#FILE_App.WPF.exe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<UI>
<Publish Dialog="ExitDialog" Control="Finish" Order="1" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT installed</Publish>
</UI>
编辑2
尽管在安装程序完成时启动应用程序不适用于全新的应用程序安装,但奇怪的是,当我更新应用程序时,它可以工作。
我认为可能与.NET版本有关,因为此博客似乎具有与我相同的症状。根据该帖子,自定义操作的空参数是红色鲱鱼,因为自定义操作很可能甚至不会运行。
问题是#FILE_App.WPF.exe
价值。
<Property Id="WixShellExecTarget" Value="[#FILE_App.WPF.exe]" />
对于每个用户的全新安装,该值为:
%userprofile%\AppData\Local\Programs\MySweetApp\MySweet.exe
而不是实际的安装位置:
%userprofile%\AppData\Local\Apps\MySweetApp\MySweet.exe
因此,LaunchApplication
自定义操作无法找到.exe并失败。
解决方案是ExeLocation
使用正确的.exe位置创建一个自定义属性(),并将其用于自定义操作:
<Property Id="WixShellExecTarget" Value="[ExeLocation]" />
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句