标签: windows-installer

调试安装程序

可能重复:
如何使用WCF制作安装程序

我有安装人员.它成功重建.成功重建后,我正在尝试安装.msi文件.

我收到下一个错误:

Error 1001. Exception occurred while initializing the installation
System.IO.FileNotFoundException: Could not load file or assembly
'file:///c:\WINDOWS\system32\Files\Default' or one of its dependencies. Then system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

还请告诉我一些关于在.NET中调试安装程序的技巧

.net c# debugging windows-installer

0
推荐指数
1
解决办法
2050
查看次数

NSIS和HKLM,使用字符串

我使用向导创建了一个NSIS安装程序,然后查看了代码:它将名为PRODUCT_UNINST_ROOT_KEY的变量定义为"HKLM":

!define PRODUCT_UNINST_ROOT_KEY "HKLM"
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
Run Code Online (Sandbox Code Playgroud)

我想知道$ {PRODUCT_UNINST_ROOT_KEY}是否为:HKLM,或"HKLM",如果文件夹的名称不同,它仍然引用该目录(我的名字叫做"HKEY_LOCAL_MACHINE").

谢谢!

installer windows-installer nsis

0
推荐指数
1
解决办法
516
查看次数

来自C#文件的WiX版本

我的所有.net应用程序都从一个C#版本文件中获取它们的版本.

我们称之为version.cs.

如何让一个WIX项目根据此文件设置版本?

我看到: 如何将WiX安装程序版本设置为当前版本?

但它无法帮助我,因为我正在包装几个DLL,其中一些可能有正确的版本,有些则没有.

如何从C#文件绑定版本?

windows-installer wix

0
推荐指数
1
解决办法
430
查看次数

如果用户不是管理员,我的程序可以使用的临时目录在哪里?

我的应用程序现在需要创建文件,然后将文件写入驻留在其已安装目录中的临时目录.msi默认将它放在Program Files \中.我没有考虑如果一些可怜的灵魂使用非管理帐户运行会发生什么.

Description: Access to the path 'Temp' is denied.
StackTrace:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj) 
at System.IO.Directory.CreateDirectory(String path) 
Run Code Online (Sandbox Code Playgroud)

我查看了我的计算机,默认情况下,用户组中的任何帐户都没有几乎所有文件夹的写入权限.我想我一无所知,因为我总是以管理员的身份运行我所有的东西,甚至没有想到它.

无论如何,有没有办法:

1:对目录创建/文件编写进行编码,以便在程序未以管理员身份运行时暂时将程序权限提升为管理员(我正在使用C#)

2:配置安装程序,为"用户"组中的每个人设置目录权限为"完全控制"(使用Windows安装项目msis)

谢谢!

c# windows-installer

0
推荐指数
1
解决办法
282
查看次数

在Wix中设置文件夹和所有子文件夹的权限

所有相关链接似乎都假设我在其中使用DirectoryRefs和CreateFolder.当我运行热量时,我得到一个.wxs文件,其中包含<Directory>标签和<Component>标签,但不包含DirectoryRefs.我宁愿不手动重写整个5000行文件.有没有办法编辑这些标签的文件夹权限?

permissions windows-installer wix

0
推荐指数
1
解决办法
2407
查看次数

如何从MSI文件中获取[二进制数据]值

我正在使用python msilib库读取MSI文件.我的目标是从二进制表中提取[二进制数据]并转储到文件中.(使用ORCA工具,我们可以通过双击[Binary Data]单元格并写入文件来提取二进制数据)

我找不到任何msilib方法来获取二进制数据.它有使用Record.GetString(field)获取字符串数据的方法.但正如预期的那样,这对[二进制数据]不起作用并给出错误.

这是代码片段

import msilib
# msi file path which is to be read
msiFilePath = "C:/msi/test.msi"
dbObj = msilib.OpenDatabase(msiFilePath, msilib.MSIDBOPEN_READONLY)
sqlQuery = "select * from Binary"
view = dbObj.OpenView(sqlQuery)
view.Execute(None)
cur_record = viewObj.Fetch()
# In Binary table; Column no 1 have string data and Column # 2 have [Binary Data]
cur_record.GetString(2)
Run Code Online (Sandbox Code Playgroud)

执行时: -

Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
cur_record.GetString(2)
_msi.MSIError: unknown error 70c
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

python windows-installer binary-data

0
推荐指数
1
解决办法
1165
查看次数

如何在安装exe时将文件复制到指定的路径?

我必须复制一个文件(在安装时)驻留在同一个文件夹中exe,msi installer并存在于某个不同的路径中.为此,我在installer课堂上写了下面的代码.

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new     
System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "xcopy";
startInfo.UseShellExecute = true;
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string SourcePath = Path.GetFullPath("C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin");
StreamWriter sw = new StreamWriter(@"C:\Users\lovestone\Desktop\data.txt");
sw.WriteLine(directory);
sw.WriteLine(SourcePath);
startInfo.Arguments = "\"" + directory + "\"" + " " + "\"" + SourcePath + "\"" + @" /e /y /I";
process.StartInfo = startInfo;
process.Start();
Run Code Online (Sandbox Code Playgroud)

我对该installer类没有任何问题,因为它data.txt在给定路径上创建(在安装时).我应该怎么做,从复制文件directorySourcePath

我应该用 …

c# windows-installer cmd xcopy

0
推荐指数
1
解决办法
1968
查看次数

如何在installshield基本MSI项目中的.NET Framework 4.5.2上添加先决条件检查

我将通过installshield安装.NET应用程序。我的.NET应用程序依赖于.NET Framework 4.5.2。因此,如果开始安装后未在系统上找到.NET Framework 4.5.2必备软件,则我不希望安装继续进行。如何在Installshield 2015中实现此目标?

更新:当我尝试按照Shahzad的建议进行可分配路线时,出现以下错误:

您的项目包含installshield先决条件。需要setup.exe安装程序启动器。

我正在处理的项目是一个基本的MSI项目。我发现它应该创建一个a setup.exe作为输出来解决此错误,但是我没有看到这里setup.exe建议的任何选项卡。我会在某处的标签下看到它吗?Project AssistantInstallation Designer

installation windows-installer installshield installshield-2015

0
推荐指数
1
解决办法
3163
查看次数

WIX工具集包含多个文件

我们有一个包含多个文件和文件夹的文件结构。我对wix工具集一无所知,但不确定如何包含所有这些文件并保持目录结构。我知道,我可以添加如下文件:

<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
  <Component Id="ProductComponent">
    <File Id="FILE_InstallMeTXT" Source="InstallMe.txt" KeyPath="yes"/>
  </Component>
</ComponentGroup>
Run Code Online (Sandbox Code Playgroud)

但是我是否必须为每个文件(我们有> 200个文件)执行此操作。

亲切的问候!

windows-installer wix wix3

0
推荐指数
1
解决办法
1690
查看次数

WiX:CustomAction基于另一个CustomAction的结果

我是WiX的新手,所以我可能会问一些非常直接的事情,但我找不到很多帮助谷歌搜索它.

我想执行2个customActions,比如ca1和ca2,其中ca2的执行取决于ca1的结果,如下所示:

if ( ca1 == SUCCESS )
{
  Perform ca2
}
Run Code Online (Sandbox Code Playgroud)

因此,只有当我的ca1返回成功时才会执行ca2(不会失败).

在WiX中最简单的方法是什么?

windows-installer wix wix3 wix3.5 wix3.6

0
推荐指数
1
解决办法
530
查看次数