【问题标题】:How to disable edit on a .msi file properties?如何禁用对 .msi 文件属性的编辑?
【发布时间】:2019-08-28 11:58:29
【问题描述】:

我对 Wix 工具完全陌生,所以我不知道如何更改它。我使用 Visual Studio 2017 扩展中的 Wix 工具集从我的 C# 项目中构建一个 .msi 文件。生成了 msi 文件,但问题是我可以更改文件的属性(例如标题、评论、作者等)。制造商属性也不会出现在细节上。我查看了 documentation 并尝试在 Package 元素上添加 'ReadOnly' 属性,但它什么也没做。

如何禁用对 msi 文件属性的编辑?

Product.wxs(产品元素):

<Product Id="*" Name="Program Name" Language="1033" Version="!(bind.FileVersion.ProgramDLL)" Manufacturer="Company Name" UpgradeCode="random GUID">
    <Package InstallerVersion="200" Description="$(var.ProductName) Setup" Comments="$(var.ProductName) is a product of Company Name" Manufacturer="Company Name" Compressed="yes" InstallScope="perMachine" />

<MediaTemplate EmbedCab="yes"/>

<UIRef Id="WixUI_Minimal"/>
<WixVariable Id="WixUILicenseRtf" Value="Programname.License.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="Banner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="Welcome.bmp" />
<Icon Id="icon.ico" SourceFile="icon.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" />
<MajorUpgrade AllowSameVersionUpgrades='yes' Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of $(var.ProductName) is already installed. Setup will now exit." />

<Property Id='INSTALLFOLDER'>
  <RegistrySearch Id='R_InstallDir' Root='HKLM' Key='SOFTWARE\Program\ProgramName' Name='InstallDir' Type='raw' />
</Property>

<Condition Message="Install Folder of Program Name not found">INSTALLFOLDER</Condition>

    <Feature Id="ProductFeature" Title="Program_Setup" Level="1">
        <ComponentRef Id="Cmp" />
  <ComponentRef Id="License" />
        <ComponentRef Id="DokuXSD" />
    </Feature>
</Product>

【问题讨论】:

  • 你不能(除了某个位置的文件的文件权限)。但是,如果您对其签名并且用户了解它应该由 签名,那么他们可能在给出已编辑的 msi 时会注意到,因为它不会由您签名.

标签: visual-studio wix windows-installer


【解决方案1】:

MSI 的企业优势:MSI 的一个关键方面 - 可能是获得企业批准和使用的最重要的事情之一 - 是 MSI 是一种开放格式。还有其他几个 key corporate advantages for MSI 围绕 transparencycustomizabilityreliable silent runningremote management

开放的 MSI 文件格式:我之前得到了这个主题的答案:How to protect MSI against modification。我不确定它是否与您的要求 100% 匹配,但不妨快速阅读一下。

MST - 转换:MSI (Windows Installer) 有一个名为 transforms*.mst 文件)的功能,它是内置的- 使用外部文件修改您的 MSI 的方式 - 因此允许企业在不更改实际 MSI 的情况下调整您的 MSI。换句话说:用户旨在能够自定义您的 MSI 以供企业使用(使用专用的附加文件)。

总结:不必担心字段会被更改,但请考虑使用您自己的证书签署您的 MSI,以防止您的发布文件在传输过程中被篡改给您的客户。另外:请务必检查您的设置是否存在恶意软件,并可能更新您的许可协议,以包含一个短语,说明该设置在发布时经过了恶意软件检查,并且是恶意软件免费 "to the best of your knowledge"legalese 不是我的专长。请务必检查好,因为签署包含恶意软件的设置可以证明您已经交付了恶意软件:-)(直到人们也成功破解了签名)。


链接

【讨论】:

    最近更新 更多