Windows 10中的图标在安装程序签名时开始菜单搜索

时间:2016-12-08 19:06:46

标签: .net wix windows-installer windows-10 signtool

我正在使用WIX为我的应用程序构建一个msi安装程序。对于安装在开始菜单中的快捷方式,图标会正确显示。当我在开始菜单搜索栏中输入应用程序的名称时,搜索结果包括我的应用程序,但该图标是来自Windows的通用图标。

这似乎不一致,但通常无符号的msi工作正常(图标显示),但签名的msi有问题。

这是另外一个数据点 - 如果我在计算机上创建一个新用户,则应用程序(已为所有用户安装)显示并且在搜索开始菜单时图标是正确的。

对于它的价值,我正在使用visual studio集成来构建安装程序。

应用程序本身是一个用C#编写的.Net可执行文件,带有一些本机依赖项。

使用crypto混淆器对应用程序进行模糊处理。

请注意,有一个单独的本地化资源dll可以使短信件具有本地化文本。目前尚不清楚这是否会影响图标

这是wxs。我知道这远非模范,我对任何改进建议持开放态度,但更愿意关注手头的问题:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <Product Id="*" Name="my name by foo" Language="1033" Codepage="UTF-8" Version="!(bind.FileVersion.barControlPanel)" Manufacturer="foo inc" UpgradeCode="guid1">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Description="Version: !(bind.FileVersion.barControlPanel)"/>


    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />

    <SetProperty Id="ARPINSTALLLOCATION" Value="[INSTALLFOLDER]" After="CostFinalize"/>

    <util:CloseApplication Id="CloseApp" CloseMessage="yes" Target="foo.barControlPanel.exe"/>

    <Feature Id="ProductFeature" Title="myapptitle by foo" Level="1">
      <ComponentGroupRef Id="ProductComponents"/>
      <ComponentRef Id="ApplicationShortcut"/>
    </Feature>

    <Icon Id="myfoobar.ico" SourceFile="..\myfoobar.ico"/>

    <Property Id="ARPPRODUCTICON" Value="myfoobar.ico"/>
    <Property Id="ARPNOREPAIR" Value="yes" Secure="yes" />
    <Property Id="ARPNOMODIFY" Value="yes" Secure="yes" />

    <InstallExecuteSequence>
      <Custom Action="foo_InstallCheck" Before="LaunchConditions"/>
    </InstallExecuteSequence>

 </Product>

  <Fragment>
    <CustomAction Id="foo_InstallCheck" BinaryKey="foo_InstallCheckBinary" DllEntry="CustomAction1" Execute="immediate" Return="check"/>
    <Binary Id="foo_InstallCheckBinary" SourceFile="$(var.foo.InstallCheck.TargetDir)$(var.foo.InstallCheck.TargetName)$(var.foo.InstallCheck.TargetExt)"/>
  </Fragment>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="fooinc" Name="foo inc">
        <Directory Id="INSTALLFOLDER" Name="barControlPanel">
          <Directory Id="ja" Name="ja"/>
        </Directory>
        </Directory>
      </Directory>
      <Directory Id="CommonAppDataFolder">
        <Directory Id="DATAFOLDER" Name="foo inc"/>
      </Directory>
      <Directory Id="ProgramMenuFolder">
      </Directory>
    </Directory>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="ProductComponents">
      <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
      <Component Id="ProductComponent" Directory="INSTALLFOLDER">
        <!-- TODO: Insert files, registry keys, and other resources here. -->
        <File Id="barControlPanel" Source="$(var.ObfuscationProject.TargetDir)foo.barControlPanel.exe" >     
          <Shortcut Id="ApplicationStartMenuShortcut"
                  DescriptionResourceDll="[#foobarControlPanelResources]"
                  DescriptionResourceId="101"
                  DisplayResourceDll="[#foobarControlPanelResources]"
                  DisplayResourceId="101"
                   Directory="ProgramMenuFolder"
                  Name="my app by foo"
                  WorkingDirectory="INSTALLFOLDER"
           Icon="myfoobar2.ico" IconIndex="0" Advertise="yes">
          <Icon Id="myfoobar2.ico" SourceFile="..\myfoobar.ico"/>
        </Shortcut>
        </File>
        <File Id="fooHelp.pdf" Source="..\fooHelp.pdf"/>
        <File Id="fooHelp.ja.pdf" Source="..\fooHelp.ja.pdf"/>
        <File Id="foobarControlPanelResources" Source="$(var.foo.barControlPanel.Resources.TargetDir)foo.barControlPanel.Resources.dll"/>
      </Component>
      <Component Id="Resources" Directory="ja">
        <File Id="JapaneseResources" Source="$(var.ObfuscationProject.TargetDir)ja\foo.barControlPanel.Resources.dll"/>
      </Component>
    </ComponentGroup>
  </Fragment>

  <Fragment>
    <DirectoryRef Id="ProgramMenuFolder">
      <Component Id="ApplicationShortcut" Guid="GUID2">
        <RegistryValue Root="HKCU" Key="Software\foo inc\my app" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
      </Component>
    </DirectoryRef>
  </Fragment>
</Wix>

0 个答案:

没有答案