打包后应用程序无法启动

时间:2013-05-31 10:18:46

标签: wpf wix installer windows-installer package

我正在创建一个需要使用WIX安装程序包打包的应用程序。

我对使用WIX非常陌生,但我花了很多时间和精力去学习它,所以我可以打包我的WPF应用程序。

在学习WIX之前,我尝试使用名为Advanced Installer的软件来帮助打包我的应用程序。太棒了。我开始使用一个很好的应用程序。之后,我尝试使用我的实际WPF应用程序,但似乎发生的事情是,在包含所有dll之后,并且在启动.exe文件之后,应用程序根本没有运行。我尝试了办公室内的其他机器,但同样的问题发生了。应用程序刚刚没有执行。

然后我尝试了一个简单的WIX安装程序(没有对话框)。我似乎遇到了与Advanced Installer相同的事情 - 它只是没有执行.exe文件。

我尝试(测试它是否是我的应用程序)是我从我的实际应用程序的调试文件夹中复制了所有dll,并将它们粘贴到我{{1}上的程序文件中}。这似乎适用于其他机器以及我自己的机器 - 让我更加困惑!我还确保应用程序构建选项如下;

C:drive

因此,我很难接受是否是我的申请(无论是Build Option: Page Copy to Output Directory: Do not copy Custom Tool: MSBuild Compile 还是实际应用程序中缺少的东西)我是否遗漏了某些东西在实际安装程序中(使用dll)。

任何帮助,专业知识或指导都会非常感激,以帮助我理解我做错了什么 - 就像我说的,我是整个包装的新手,所以我可能会感到非常愚蠢!

提前致谢。

2 个答案:

答案 0 :(得分:1)

WIX是一种包装工具。它只是打包您的应用程序并将其放入客户端计算机并执行其他一些不需要的事情。

完全与您的应用程序配置有关。任何应用程序(WPF或Windows).exe文件都需要在客户端计算机上执行所有引用程序集。如果将“复制本地”属性设置为true,则需要将程序集发送到应用程序安装文件夹。如果将“复制本地”属性设置为false,则需要将所有程序集安装到客户端计算机GAC文件夹中。

将程序集发送到安装文件夹总是比在GAC中安装它更容易。

注意:

框架也在应用程序打包中发挥了重要作用。

WPF应用程序是必需的.NET Framework 4.0或客户端机器中至少.NET Framework 3.5 SP1依赖于我们用于创建应用程序的框架。

答案 1 :(得分:1)

像WIX一样,

Advanced Installer只是一个包装工具,不会影响安装的运行方式。要安装程序集,您有一个名为“Assemblies”的不同页面,因此首先需要在“文件和文件夹”页面中添加所有EXE和DLL,然后转到“程序集”页面并在列表中添加您需要安装的DLL组件。

在这个新页面中,在列表中添加了程序集后,您可以轻松地在EXE旁边的应用程序文件夹中选择(单选按钮)它们应该如何安装,即私有安装,或者在GAC中安装机器。 / p>

请注意,“装配”页面在专业或更高级别的项目类型上可见,而不是在免费版本中。

关于上面的单独组件讨论。如果您只有一个组件来安装所有文件,则单独的组件不会影响应用程序的运行方式。这只是Microsoft的推荐,以便为您的安装程序包提供更好的设计。

对每个DLL使用单个组件将允许Windows Installer在其中一个DLL丢失或被更改时触发自动修复。虽然好像所有文件都有一个组件,但只有当keypath (only one of those files) from that component丢失或被更改时,Windows Installer才会触发自动修复,如果缺少或更改了任何其他文件,则在应用程序中不会触发修复推出。

在下面的文章中,您可以找到有关organizing components recommendations的更多详细信息。