1

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

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

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

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

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

Build Option: Page 

Copy to Output Directory: Do not copy

Custom Tool: MSBuild Compile 

因此,我很难确定它是否是我的应用程序(无论是dll's 还是实际应用程序中缺少的东西)还是我是否在实际安装程序中丢失了某些东西(使用WIX)。

非常感谢任何帮助、专业知识或指导,以帮助我了解我做错了什么 - 就像我说的,我对整个包装都是新手,所以我错过了一些非常愚蠢的东西!

提前致谢。

4

2 回答 2

1

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

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

请注意,Assemblies 页面在 Professional 或更高版本的项目类型中可见,而不是在免费版中。

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

如果其中一个 DLL 丢失或被更改,则每个 DLL 都有一个组件将允许 Windows Installer 触发自动修复。就好像所有文件都有一个组件一样,只有当该组件的密钥路径(只有其中一个文件)丢失或被更改时,Windows Installer 才会触发自动修复,如果任何其他文件丢失或更改,修复将启动应用程序时不会触发。

在下面的文章中,您可以找到有关组织组件建议的更多详细信息。

于 2013-06-12T07:55:17.207 回答
1

WIX 是一个打包工具。它只是打包您的应用程序并将其放入客户端计算机并执行一些此处不需要的其他操作。

它完全与您的应用程序配置有关。任何需要所有参考程序集的应用程序(WPF 或 Windows).exe 文件都应在客户端计算机中可用以执行。如果将 Copy Local 属性设置为 true,则需要将程序集发送到应用程序安装文件夹。如果将 Copy Local 属性设置为 false,则需要将所有程序集安装到客户端计算机 GAC 文件夹中。

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

笔记:

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

客户端计算机中需要 WPF 应用程序 .NET Framework 4.0 或至少 .NET Framework 3.5 SP1,这取决于我们用于创建应用程序的框架。

于 2013-05-31T11:24:11.243 回答