相关疑难解决方法(0)

使用什么安装产品?InstallShield,WiX,Wise,Advanced Installer等

我目前正在调查我们目前正在使用的安装包(Wise Installer 9),并转向处理Windows Vista,Windows 7和64位系统之类的东西.安装人员的本地化将是有益的,因为我们也有许多加拿大法国客户.

我们目前使用以下技术安装软件包和实用程序:

  • 进步4GL
  • Visual Studio 2005
  • Visual Studio 2008
  • .NET Compact Framework 3.5

我已经看过WiXInstallShield,Altiris还替换了旧的Wise系统.

我还没有玩过很多关于InstallShield的东西,但是从我见过/安装过的所有东西来看,它似乎都是业界的最爱之一.我浏览了一些与InstallShield相关的Stack Overflow标签,我很想知道该组织对此有何看法.

我是否只是默认情况下去找他们?WiX在非.NET的东西有多好?

installer windows-installer installshield wix advanced-installer

56
推荐指数
4
解决办法
4万
查看次数

如何在WiX 3中注册Win32 COM DLL文件?

我找到了一个关于注册DLL的示例,使用Windows Installer XML工具集在MSI文件中注册COM Interop的程序集.,和WiX抱怨"AssemblyRegisterComInterop"属性.

我删除了它并将"Assembly"属性更改为win32,它说我需要指定AssemblyManifest属性,但是我应该放在那里?

com dll wix wix3

35
推荐指数
3
解决办法
3万
查看次数

如何避免WiX/MSI部署解决方案中的常见设计缺陷?

如何避免WiX/MSI部署解决方案中的常见设计缺陷?


部署是大多数开发的关键部分 - 部署失败意味着您的最终用户永远无法评估您的产品.这很容易成为软件开发中最昂贵的错误.请给这个内容一个机会.我坚信,通过应用程序设计的微小变化可以显着提高软件质量,使部署更加合理,更可靠 - 这就是"答案"的全部 - 软件开发.


这是一个Q/A风格的问题,答案只列出了MSI文件中不要做的一些事情,以避免最常见的设计缺陷.

windows-installer installshield wix advanced-installer installshield-le

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

如何确定导致重复Windows Installer自修复的原因?

  • 如何仅记录由Installshield 2008生成的MSI文件的更改,以通过" 自我修复 " 重新安装?
  • 自修的原因是什么?
  • 如何使用Installshield 2008禁用MSI的自我修复?

installer windows-installer installshield wix resiliency

11
推荐指数
1
解决办法
9844
查看次数

程序安装的好处和真正目的是什么?

在我迄今为止编写的所有程序中,如果我希望它在另一个工作站上工作,我只需复制并粘贴使其运行所需的可执行文件和必要文件(例​​如:.o文件,二进制文件......).

但是所有为商业用途而构建的程序总是带有安装程序.例如PC游戏.所以我的问题是:当我们只是将文件复制到目标工作站时,安装的主要好处/原因是什么?

- 其中一个原因可能是防止盗版.但除此之外,我确定还有其他更强的理由吗?

deployment installation installer windows-installer wix

11
推荐指数
1
解决办法
2844
查看次数

Wix安装程序不会覆盖以前版本的可执行文件

我有一个非常简单的安装程序 - 将一个DLL复制到Program Files子文件夹并使用regsvr32.exe注册它.效果很好,但是如果安装了旧版本的dll,"修复"不会覆盖现有的dll.dll已签名,其版本(构建)编号始终递增(例如2.0.0.123 - > 2.0.0.124).

查看以前的类似帖子,我添加了RemoveExistingProducts并将ProductId指定为"*".卸载然后安装新版本工作正常,但我真的需要修复来更新现有的dll.

还有什么我需要做的吗?

谢谢!

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

  <!--
When creating a new install for the next version, these fields must be modified
-->
  <?define ProductVersion = "2.0.00" ?>

  <?define ProductId64 = "*" ?>
  <?define ProductId32 = "*" ?>

  <?define PackageId   = "45F34788-66AC-441C-B666-707FFA7F1EE9" ?>


  <!-- Product name as you want it to appear in Add/Remove Programs-->
  <?if $(var.Platform) = x64 ?>
  <?define ProductName = "XYZ (64 bit)" ?>
  <?define Win64 = "yes" …
Run Code Online (Sandbox Code Playgroud)

windows-installer wix

11
推荐指数
2
解决办法
3883
查看次数

将regsvr32作为WIX安装程序的一部分运行

我编写了一个通过WIX生成的MSI分发的COM组件.

COM组件具有相当复杂和非静态的注册逻辑,这意味着直接在Windows Installer WXS文件中嵌入注册信息不是一个可行的选项 - 注册必须使用regsvr32- 并且它是一个32位的COM组件,所以它必须使用32位版本regsvr32.exe- %SystemRoot%\SysWow64\regsvr32.exe在64位Windows或%SystemRoot%\System32\regsvr32.exex86 Windows上.

我注意到WIX与这个WXS XML有两个问题:

<InstallExecuteSequence>
    <Custom Action="COMRegister"   After="InstallFinalize">NOT Installed</Custom>
    <Custom Action="COMUnregister" After="InstallInitialize">Installed</Custom>
</InstallExecuteSequence>

<CustomAction Id="COMRegister"   Directory="APPLICATIONROOTDIRECTORY" ExeCommand='regsvr32.exe /s "[APPLICATIONROOTDIRECTORY]Component.dll"' />
<CustomAction Id="COMUnregister" Directory="APPLICATIONROOTDIRECTORY" ExeCommand='regsvr32.exe /s /u "[APPLICATIONROOTDIRECTORY]Component.dll"' />
Run Code Online (Sandbox Code Playgroud)
  1. regsvr32.exe引用了错误.我注意到x64版本resgvr32.exe是在64位系统而不是32位版本上运行的.
  2. regsvr32.exe在没有提升权限的情况下运行,因此COM注册失败E_ACCESSDENIED.

对于1.它可以工作,如果我硬编码regsvr32.exe可执行文件的路径使用[WindowsFolder]\SysWOW64\regsvr32.exe,但这SysWow64不适用于不存在的真正的32位机器.

对于2.我在线阅读更改After="InstallFinalize" toAfter ="RemoveExistingProducts" would cause it to run with elevated permissions, however instead this just gives me errors aboutRemoveExistingProducts`是一个未解析的符号名称.

我该如何解决这两个问题?

更新

(在过去2小时内遇到这个问题后,我确信WIX的作者是HP …

regsvr32 wix

4
推荐指数
1
解决办法
4124
查看次数