我必须使用WiX构建一个.msi,它可以部署到多个环境中.每个环境.有自己的配置文件.现在,我们为每个环境构建一个msi,我想摆脱这种做法.有没有办法只构建一个MSI,它可以根据运行的位置复制特定文件?
这可能是非常明显的,但对于我的生活,我无法弄清楚如何做到这一点.
我有一个在InstallShield 2011中创建的基本MSI安装包.我无法弄清楚如何获得在"安装设计器"的"常规信息"页面上设置的"产品版本"字段以显示安装过程中的对话框表单.
我可以看到显示"产品名称"属性,但不显示"产品版本"
如何在安装期间向用户显示"产品版本"?
谢谢!
我在WiX上写了一个安装程序; 而且效果很好.但是,我有一个小问题,安装程序的"报告"大小似乎随着每次后续安装而增长.
脚步
有没有人有任何想法我如何阻止安装之间的增长?或者,如果这是设计?
如何仅在安装中断或错误完成时才对自定义操作执行排序?
是否有任何Windows安装程序属性返回当前安装状态(失败/成功)?
我正在使用WixUI_Mondo套装.我修改了"CompleteButton"按钮SetupTypeDlg:
<Control Id="ServerButton" Type="PushButton" X="40" Y="120" Width="80" Height="17" ToolTip="!(loc.SetupTypeDlgServerButtonTooltip)" Text="!(loc.SetupTypeDlgServerButton)">
<Publish Property="WixUI_InstallMode" Value="InstallServer">1</Publish>
<Publish Property="SERVICE" Value="[SERVSTR]">1</Publish>
<Publish Property="ADDLOCAL" Value="Feature1,Feature2,Feature3">1</Publish>
</Control>
<Property Id="ADDLOCAL" Secure="yes"></Property>
Run Code Online (Sandbox Code Playgroud)
当我按下ServerButton日志时说:
(CLIENT) MSI (c) (1C:88) [15:28:49:154]: PROPERTY CHANGE: Adding ADDLOCAL property. Its value is 'Feature1,Feature2,Feature3'.
(UNKNOWN) ???????? 15:28:49: ServStrDlg. Dialog created
(UNKNOWN) ???????? 15:28:53: ShortsDlg. Dialog created
(UNKNOWN) ???????? 15:28:55: VerifyReadyDlg. Dialog created
(CLIENT) MSI (c) (1C:88) [15:28:55:966]: Note: 1: 2727 2:
(UNKNOWN) ???????? ????????? 15:28:56: WelcomeDlg. ??? ???????? 1.
(CLIENT) …Run Code Online (Sandbox Code Playgroud) 当我尝试通过CruiseControl和MSBuild版本4构建解决方案文件时,我收到以下错误
ASPNETCOMPILER : error ASPRUNTIME: The precompilation target directory
Run Code Online (Sandbox Code Playgroud)
它来自哪里以及如何避免它?
我正在创建一个PowerShell二进制模块,它使用第三方库(DLL),它输出到控制台.所以,基本上我希望我的二进制模块输出自己的消息和该DLL的控制台输出.
可能吗?
所以,让我们说第三方API执行以下操作:
public static void SomeMethod() {
...
Console.Write("Extracting the file...");
...
}
Run Code Online (Sandbox Code Playgroud)
二进制模块调用它:
protected override void ProcessRecord() {
...
this.WriteObject("Hello!");
SomeClass.SomeMethod();
this.WriteObject("Goodbye!");
}
Run Code Online (Sandbox Code Playgroud)
我看到的输出是:
Hello!
Goodbye!
Run Code Online (Sandbox Code Playgroud)
我想看到的是:
Hello!
Extracting the file...
Goodbye!
Run Code Online (Sandbox Code Playgroud) 我创建了一个 WixLib 项目和解决方案,其中包含一个片段,该片段指向我想要包含在多个项目中的一组 DLL。
但是,当我从其他解决方案引用此 wixlib 时,dll 所在目录的预处理器值随 wixlib 一起提供。我想覆盖这个值或更新它。
我的 Wixlib 看起来像这样:
<Fragment>
<ComponentGroup Id="CG.FarPointComponents">
<Component Id="cmpBBC3777DD58F5E2AE4704D66EF87C105" Directory="INSTALLDIR"
Guid="6CB60019-D122-41F6-8009-C41B07BCE5C3">
<File Id="filC126C8C2BFE502E045C17A812B8A907D" KeyPath="yes"
Source="$(var.FarPointDir)\FarPoint.CalcEngine.dll" />
</Component>
</ComponentGroup>
</Fragment>
Run Code Online (Sandbox Code Playgroud)
我想在另一个解决方案中为 var.FarPointDir 指定另一个目录,我该怎么办?我用的是wix 3.6
我有一个WiX安装程序脚本,它引用Visual Studio Solution文件夹根目录下的文件夹中的文件.在我的.wixproj中,我尝试设置Properties| Tool Setting| Linker至
-b $(SolutionDir)\WixSource
Run Code Online (Sandbox Code Playgroud)
并获得一个错误,因为在$ SolutionDir变量的中间是一个带空格的文件夹.所以,我试过了
-b "$(SolutionDir)\WixSource"
Run Code Online (Sandbox Code Playgroud)
并抱怨错误地使用名称周围的引号,并且我应该在文件夹的末尾放置一个双反斜杠,其中包含空格. - 不能这样做,因为它在$(SolutionDir)宏内.
因此,根据对SO的建议,我试图使用LinkerBindInputPathsPropertyGroup,但文档严重缺乏对此属性的实际使用.
我正在运行WiX 3.7,不允许以下内容......
谷歌搜索时,我被告知需要进入以下<Package>元素:
<Package ...>
<PropertyGroup>
<LinkerBindInputPaths ???/>
</PropertyGroup>
</Package>
Run Code Online (Sandbox Code Playgroud)
WiX文档@ http://wix.sourceforge.net/manual-wix3/msbuild_task_reference_light.htm说
指定链接器用于查找所有文件的绑定器路径.这相当于light.exe中的-b开关.命名的BindPaths是通过在所提供的路径上添加2个或更多字符的存储桶名称,后跟等号("=")前缀来创建的.
由于没有通过谷歌搜索找到的例子,我无法破译"2个或更多字符的桶名称"是什么,或者是否有任何规则.
我希望能够指定类似的东西$(var.SolutionDir)\WixSource,但需要一些帮助来确定如何解决这个问题...
在下面的代码中,以下行
WorkflowResult result = wf.Execute(SitecoreItems.MediaWorkflowApproveCommand, item, "", false);
Run Code Online (Sandbox Code Playgroud)
抛出一个Could not find command definition错误.ID和所有其他属性都有效,但命令定义无效.
有什么可能导致它的想法?
using (new SecurityDisabler())
{
// Find all related items
ItemLink[] itemLinks = dataItem.Links.GetValidLinks();
foreach (ItemLink link in itemLinks)
{
Item item = link.GetTargetItem();
// publishing related media items - the ones that were referenced by the workflow item
// this can be extended - you can publish related aliases also
if (item != null && item.Paths.IsMediaItem)
{
//push field to the next state
IWorkflow …Run Code Online (Sandbox Code Playgroud)