我有一个Windows应用程序类,我已经定义了我的Windows服务,我需要从中生成一个.msi(安装程序)。 到目前为止,我所做的是:在Visual Studio Enterprise 2017中创建一个新项目 - 该项目属于Wix v3的Setup Project类型(来自Wix Toolset);在这个项目中我默认有References和Product.wxs。从添加引用,项目,我添加了服务项目。
我发现的其中一个消息来源说,所需要的就是添加
Source="$(var.MyApplication.TargetPath)" />
如下所示: http://wixtoolset.org/documentation/manual/v3/votive/authoring_first_votive_project.html
...但这对我不起作用,因为:
未定义的预处理器变量$(var.MyApplication.TargetPath)
我不知道在哪里定义此变量以及此路径的含义是什么。 摘录于此:
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<Component Id="ProductComponent">
<!-- TODO: Insert files, registry keys, and other resources here. -->
<File Source = "$(var.MyApplication.TargetPath)"/>
</Component>
</ComponentGroup>
有什么想法吗?
感谢。 这是除文件源行之外的所有自动代码。不知道我应该为INSTALLFOLDER添加什么以及语法应该是什么。 目的是从我的Windows服务
生成.msi答案 0 :(得分:1)
此步骤的Wix文档至少从版本3.11开始。
您需要在Windows窗体解决方案中添加Wix设置作为第二个项目,而不是创建两个单独的解决方案(app和Wix)。在应用程序解决方案资源管理器窗格中右键单击解决方案,然后选择添加&gt;新项目。选择像WixSetup这样的名称。
接下来,点击WixSetup项目&gt;参考并选择添加新参考。项目列表应该显示您的应用程序,因为它们位于相同的解决方案中。
接下来,将条目添加到Product.wxs中,但文档也不正确,您需要将其包装在组件选项卡中。 (将MY-APPLICATION-NAME替换为您的Windows窗体应用项目的名称。)
<Component Id="ProductComponent">
<File Source="$(var.MY-APPLICATION-NAME.TargetPath)" />
</Component>
您还需要编辑.wsx的第3行以包含非空公司名称或删除该属性:
<Product Id="*" Name="WixSetup" Language="1033" Version="1.0.0.0" Manufacturer="MY-COMPANY"
最后,在构建Wix MSI之前,必须在主应用程序中安装发布版本。