标签: wix

Wix:如何设置文件夹和所有子文件夹的权限

我知道如何设置文件夹的权限:

<DirectoryRef Id="ProgramFilesFolder">
  <Directory Id="PHPFolder" Name="PHP">
    <Component Id="PHP_comp" DiskId="1" Guid="*">
      <CreateFolder>
        <Permission User="Everyone" GenericAll="yes" />
      </CreateFolder>
Run Code Online (Sandbox Code Playgroud)

但是,我还需要将权限应用于所有子文件夹.是否可以列出所有文件夹?

permissions installer windows-installer wix wix-extension

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

如何在Windows 7中查找已安装应用程序的UpgradeCode和ProductCode

我的机器上安装了一个应用程序.我也有它的源代码,但不知何故,此应用程序的ProductCode和UpgradeCode已更改.

现在我想获得这个已安装应用程序的UpgradeCode和ProductCode.我觉得必须有一些工具.

谁能告诉我如何获得已安装应用程序的UpgradeCode和ProductCode?

installer automation windows-installer wix msiexec

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

如何使用WiX安装程序注册文件类型/扩展名?

我没有在WiX文档(或Google)中找到这个问题的明确答案.当然我可以在HKCR中编写相应的注册表项,但这让我觉得很脏,我希望这是一个标准的任务,应该有一个很好的默认解决方案.

对于奖励积分,我想知道如何使其"安全",即不要覆盖文件类型的现有注册,并且只有在安装期间注册并且未更改时才删除卸载时的注册.

installation installer windows-installer wix wix3

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

使用WiX安装程序复制Visual Studio COM注册

曾几何时,一位年轻,天真的工程师认为将他的应用程序的一些功能分成一个用C#编写的COM组件是个好主意.Visual Studio拥有所有这些工具,对吧?.NET实际上是为此做的,对吗?哈!他说,这很容易.我将对组件进行适当的分离,使业务逻辑远离前端,而使用COM,我将能够在任何地方使用它!他愉快地检查了register for COM interop项目属性中的复选框,暴露了他想要的分类,然后继续前进.

哦,试验这样的选择.这位年轻的工程师现在更有经验,现在不希望任何人这样做.但是,肩负重担,负担仍然沉重.他希望减轻负担.

随之而来的是WiX,一种用于从XML生成Windows Installer文件的工具.这引起了他的兴趣 - 它可以简单地从一些配置文件复制一个正确的Windows安装程序文件所需的大部分代码.他的目光正在抬头.

使用WiX 2.0,他可以很容易地生成注册C#COM对象所需的文件.这涉及使用工具牛油.他会做以下事情:

tallow -c -nologo MyComExposedLibrary.dll > MyComExposedLibrary.wxs
Run Code Online (Sandbox Code Playgroud)

然后将其修复(首先这是手动完成的,但最终我将步骤记录到一个小工具集中,最终目录引用ID,组件ID,文件ID,GUID和代码库).

然后,随后的安装程序将安装,如果应用程序工作,将有欢乐的庆祝活动.

它没有.

几天来,年轻的工程师倾注了他的开发PC和测试安装PC的差异."所有的注册表键都是一样的!" 他会惊呼."对于MyComExposedLibrary的所有内容都已注册,我发誓!"

除此之外,事实并非如此.

在第三天的黎明之后,经过许多山露,他意识到Visual Studio正在注册的另一个对象是他的安装程序不是:MyComExposedLibrary.tlb文件.

显然,Visual Studio一直在注册此文件,在HKLM\Software\Classes\Interface注册表项中创建其他子项,并在其中注册typelib HKLM\SOFTWARE\Classes\TypeLib.

Tallow没有给出任何帮助,抱怨说.tlb不是一个文件.也不是WiX 3.0测试版 - 这似乎有更多的问题让事情发挥作用.

我也尝试了热火.这生成了注册表元素和类元素.我清理了热量的输出,然后去编译它,但得到了一个不同的错误:error LGHT0130 : The primary key <uuid here> is duplicated in table 'Registry'.问题是,据我所知,uuid实际上并不存在于我的任何wxs源文件中.如果我在我的feature元素中改变组件引用顺序,则另一个dll组件会给出该错误.由于我没有成功完成项目的WiX 3.0版本的编译,我无法确认热量是否能提供正确的输出.

我从安装程序中删除了所有内容,除了导致出现此错误的程序集之一并再次尝试编译.我得到了同样的错误.Arrugh!

所以,我的好伙伴,Windows爱好者和WiX用户都有两个问题:

  • WiX可以本地注册的类型库吗?如果是这样,怎么样?
  • 如果没有,使用Windows安装程序注册typelib的正确方法是什么?

此外,我想作为另一部分,Visual Studio如何确定如何注册typelib?(编辑:看起来关于typelib注册MSDN库文章有所需的密钥的名称,但我仍然需要弄清楚如何获取uuid的.(这是关于typelib的博客文章和Larry Osterman的COM注册.))再读一点,手动注册这些位可能会让我失望,但我希望不是......

我评估了输出regasm /regfile:MyDll.dll MyDll.dll.看起来这些是wix为dll生成的密钥.Regasm的另一种模式,regasm /tlb:<filename>生成并注册程序集的类型库,但是,

/ regfile [:FileName]生成具有指定名称的reg文件,而不是注册类型.此选项不能与/ u或/ tlb选项一起使用 …

.net windows com wix typelib

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

谁能给我一个在WIX中修改Windows环境系统变量的例子?

在完成WIX教程后,我仍然不知道如何将installdir添加到Windows系统变量的PATH中.

我试着用

  Environment Id='UpdatePath' Action='create' Name='PATH'  System='yes' Value='[INSTALLDIR]' 
Run Code Online (Sandbox Code Playgroud)

但是我安装程序后路径没有变化.我几乎找不到任何WIX的示例代码.请帮帮我,非常感谢!

environment wix path

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

如何在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包括vs片段

  • WiX包含(.wxi文件)和WiX片段(.wxs文件)之间有什么区别?
  • 每个用例有哪些?
  • 应该使用哪个以及为什么?

wix wix3

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

WiX x64平台目标

当我创建一个WiX项目并尝试使用平台设置为'x64'来构建它时,我的构建输出中出现错误,如下所示:

------ Build started: Project: MyProject, Configuration: Release x64 ------
C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\wix2010.targets(444,7): error : The OutputPath property is not set for this project.  Please check to make sure that you have specified a valid Configuration/Platform combination.  Configuration='Release'  Platform='x64'
Done building project "MyProject.wixproj" -- FAILED.
------ Build started: Project: MyProject, Configuration: Debug x64 ------
C:\Program Files (x86)\MSBuild\Microsoft\WiX\v3.x\wix2010.targets(444,7): error : The OutputPath property is not set for this project.  Please check to make sure that you have specified a …
Run Code Online (Sandbox Code Playgroud)

64-bit wix build wix3.5

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

删除许可证对话框

我正在使用Wix 3.6来制作一个内部使用的简单MSI.我想知道是否有一种简单的方法来删除许可协议对话框.

谢谢你的任何建议

wix wix3.6

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

在Windows安装项目中公布了快捷方式与未公布的快捷方式

我无法理解在快捷方式属性中使用属性Advertise的确切后果.差异是什么?

windows-installer wix setup-project

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