相关疑难解决方法(0)

最喜欢的Django提示和功能?

受到"隐藏的......的特征"系列的启发,我很想知道你最喜欢的Django技巧或者你知道但鲜为人知但有用的功能.

  • 请每个答案只包含一个提示.
  • 添加Django版本要求(如果有).

python django hidden-features

308
推荐指数
43
解决办法
6万
查看次数

如何实施WiX安装程序升级?

在工作中,我们使用WiX来构建安装包.我们希望安装产品X会导致在该计算机上卸载该产品的先前版本.

我已经在互联网上的几个地方读过有关重大升级的内容,但无法让它发挥作用.任何人都可以指定我需要采取的确切步骤,以便将卸载以前的版本功能添加到WiX吗?

installer windows-installer wix

229
推荐指数
10
解决办法
12万
查看次数

Wix:每个组件一个文件或每个组件多个文件?

我应该将我想要安装的所有文件包装在单个组件中吗?将多个文件放在一个组件中有什么好处?

windows-installer wix wix3

64
推荐指数
2
解决办法
2万
查看次数

使用Wix从一个.wxs文件创建32位和64位安装程序

我想在构建32位和64位安装程序时保持我的顶级.wxs DRY.我正在使用candle.exe的-arch参数来控制构建的默认安装程序架构.

我现在正在讨论的是,看起来ProgramFilesFolder在32位和64位(ProgramFiles64Folder)架构之间是不同的.这是我第一次尝试解决的问题:

<?if $(sys.BUILDARCH)=x64 ?>
<Directory Id='ProgramFiles64Folder' Name='PFiles'>
<?else ?>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<?endif ?>
    <Directory Id='the-rest' Name="Company Name">
...
Run Code Online (Sandbox Code Playgroud)

我尝试了这个错误.显然,在评估预处理器之前会触发XML验证.当我手动更改为使用ProgramFiles64Folder我的构建工作.

我试图沿着DirectoryRef路线走下去但没有成功.有关在没有在.wxs文件中进行sed替换的情况下使其工作的任何建议吗?

注意:我在Wix 3.5和3.6中试过这个.

64-bit wix wix3

31
推荐指数
2
解决办法
2万
查看次数

更改从Visual Studio 2010生成的exe文件的图标

我目前正在Visual Studio 2010中创建一个应用程序.在构建项目以生成应用程序的输出后,我发现.exe是使用默认图标构建的.

有没有办法更改或使用我自己的图片作为Visual Studio 2010生成的.exe文件的图标?

visual-studio-2010

30
推荐指数
1
解决办法
9万
查看次数

WIX自动生成GUID*?

假设我生成了我的WIX XML文件,其产品ID为*.另外,对于每个组件GUID,我使用*.

  <Product Id="*" Name="xxx" Language="1033" Version="1.0.0.0" Manufacturer="xxx" UpgradeCode="xxx">
Run Code Online (Sandbox Code Playgroud)

幕后是每次编译我的WIX安装程序时*旋转一个唯一的GUID?假设我的1.0.0版安装了一台机器.然后我将我的WIX安装程序重新编译为1.0.1版.

当我去安装1.0.1时,WIX如何知道已经安装了1.0.0,因此将删除所有文件/注册表项并安装1.0.1?

我应该使用GUID中的*还是我的WIX XML配置中应该有唯一的ID/GUID?

c# guid wix

28
推荐指数
2
解决办法
2万
查看次数

如何将wxi文件包含到wxs中?

根据优秀的建议,我已将一些变量移动到WXI文件.如何将其包含在WXS文件中

installer windows-installer wix merge-module

18
推荐指数
2
解决办法
2万
查看次数

Wix与条件,属性和自定义操作的交互

我在设置Dialog上按钮的启用状态时遇到问题.有问题的按钮定义为:

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
<Condition Action="disable">Validated = 0</Condition>
<Condition Action="enable"><![CDATA[Validated <> 0]]></Condition>
<Publish Event="EndDialog" Value="Return">1</Publish>
</Control>
Run Code Online (Sandbox Code Playgroud)

Validated属性从初始值0开始,正如预期的那样,下一个按钮开始被禁用.

<Property Id="Validated" Value="0"/>
Run Code Online (Sandbox Code Playgroud)

通过另一个按钮上的自定义操作修改属性本身.

<Control Id="PerformValidation" Type="PushButton" X="225" Y="75" Width="50" Height="20" Text="Validate">
<Publish Event="DoAction" Value="ValidateDB">1</Publish>
</Control>
Run Code Online (Sandbox Code Playgroud)

使用自定义操作的精简版本,如:

[CustomAction]
public static ActionResult ValidateDatabase(Session session)
{
session.Log("Begin ValidateDatabase");
session["Validated"] = "1";
return ActionResult.Success;
}
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,自定义操作运行后,"下一步"按钮不会重新启用.我可以确认CA确实运行,并且该属性已成功设置.如果我执行其他操作以使其刷新,UI将更新,例如,返回页面然后再次转发到此页面,并启用"下一步"按钮.

有关如何在自定义操作后刷新按钮状态的任何想法?

wix wix3.5

14
推荐指数
2
解决办法
1万
查看次数

WiX:如何在WixUI_Advanced序列中覆盖x64机器上的"C:\ Program Files(x86)"?

我正在使用WixUI_Advanced序列来允许用户选择每台机器每用户安装并更改目标文件夹.我的WiX项目旨在生产x86x64 MSI(我正在使用WiX提示和技巧建议).我还将应用程序安装文件夹保留在注册表中以进行主要升级(我使用APPLICATIONFOLDER属性和目录ID - 而不是INSTALLLOCATION - 根据WixUI_Advanced要求).

WixUI_Advanced序列中存在一个错误,导致目标文件夹对话框在64位计算机上运行时在C:\ Program Files(x86)下显示app文件夹而不是C:\ Program Files,即使代码正确设置了app文件夹到ProgramFiles64Folder属性.错误跟踪器注释建议使用SetDirectory元素来设置APPLICATIONFOLDER的值,但没有解释如何执行此操作的示例.当我尝试时,它确实有点不同(我还发现一些帖子建议使用自定义动作设置APPLICATIONFOLDER,但没有一个对我有效).有谁知道如何使WixUI_Advanced序列在64位系统上显示正确的'Program Files'文件夹(并在主要升级期间显示最初选择的文件夹)?

如果它有帮助,我将提供示例WXS片段,但它们几乎遵循StackOverflow的WiX提示和技巧帖子的建议.此外,我的64位MSI包确实是一个64位的包(我的包和组件标记为'x64';它不能在32位平台上运行.)我正在使用WiX 3.6和Visual Studio 2010 .

代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

<Product 
    Id="81955f17-31f3-4e51-8294-372f96141c00" 
    Name="WiX64BitDemo" 
    Language="1033" 
    Version="1.0.0.0" 
    Manufacturer="Test" 
    UpgradeCode="5bed9777-bea6-4dc3-91d7-5dd93819563a">

<Package 
    InstallerVersion="300" 
    Compressed="yes"
    InstallScope="perMachine"
    Platform="x64" />

<MajorUpgrade 
    AllowSameVersionUpgrades="no"
    DowngradeErrorMessage="Can't downgrade."
    Schedule="afterInstallInitialize" />

<Media 
    Id="1" 
    Cabinet="media1.cab" 
    EmbedCab="yes" />

<Property …
Run Code Online (Sandbox Code Playgroud)

windows-installer wix wix3.6

14
推荐指数
2
解决办法
2万
查看次数

将命令行变量传递到基于WiXx的Windows Installer MSI

我正在使用WiX构建一个MSI安装程序,我正在使用WixUI_Advanced.我的定义ApplicationFolder看起来像这样,遵循另一个SO答案(WiX技巧和提示)的建议.

  <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="$(var.PlatformProgramFilesFolder)">
        <Directory Id="APPLICATIONFOLDER" Name="$(var.InstallName)">
Run Code Online (Sandbox Code Playgroud)

我现在想让用户选择进行静默安装并ApplicationFolder在路径上传递名称,相对于相应的程序文件文件夹或绝对名称.

我知道我可以在命令行上传递公共属性值msiexec,但是如何将其用作值ApplicationFolder以及如何为绝对路径和相对路径设置它.

windows-installer wix command-line-arguments

14
推荐指数
1
解决办法
1万
查看次数